JavaScript中this方法;var,let,constd区别;JSON是什么

this方法

  • 1、在对象方法中, this 指向调用它所在方法的对象。
  •  2、单独使用 this,它指向全局(Global)对象。
  •  3、函数使用中,this 指向函数的所属者。
  •  4、严格模式下函数是没有绑定到 this 上,这时候 this 是 undefined。
  •  5、在 HTML 事件句柄中,this 指向了接收事件的 HTML 元素。
  •  6、apply 和 call 允许切换函数执行的上下文环境(context),即 this 绑定的对象,可以将 this 引用到任何对象。

在JavaScript中,this是一个特殊的关键字,用于指向当前执行的函数或方法的对象。它的值取决于函数或方法的调用方式。

在全局范围内使用this时,它指向全局对象(在浏览器中是window对象,在Node.js环境中是global对象)。

在函数中使用this时,它的值取决于函数的调用方式。下面是几种常见的函数调用方式和this的值:

  1. 函数作为普通函数调用:当函数作为普通函数调用时,this指向全局对象。例如:
function example() {console.log(this); // 指向全局对象,即window(浏览器环境)
}example(); // 输出window对象

  1. 函数作为对象的方法调用:当函数作为对象的方法调用时,this指向调用该方法的对象。例如:
var obj = {example: function() {console.log(this); // 指向调用该方法的对象,即obj}
};obj.example(); // 输出obj对象

  1. 使用callapply方法调用函数:可以使用callapply方法显式地指定函数内部的this的值。例如:
function example() {console.log(this);
}var obj = {name: 'John'
};example.call(obj); // 输出obj对象

  1. 使用构造函数创建对象:当使用关键字new创建对象时,this指向新创建的对象。例如:
function Example() {console.log(this); // 指向新创建的对象
}var obj = new Example(); // 输出新创建的对象

需要注意的是,在箭头函数中,this的值是在定义时确定的,而不是在调用时确定的。箭头函数没有自己的this绑定,所以它会捕获外部作用域的this的值。例如:

function example() {var arrowFunction = () => {console.log(this); // 指向外部作用域的this};arrowFunction();
}var obj = {example: example
};obj.example(); // 输出obj对象

var,let,const

在JavaScript中,var,let和const是用于声明变量的关键字。

  • var:在ES5以及之前的版本中用于声明变量。它具有函数作用域,即在声明它的函数内部可见,而在函数外部不可见。如果在函数内部没有使用var关键字声明变量,则该变量会成为全局变量,可在函数外部访问。
function example() {var x = 10;if (true) {var y = 20;console.log(x); // 输出: 10}console.log(y); // 输出: 20
}
example();

  • let:在ES6中引入的关键字,用于声明块级作用域的变量。它具有块级作用域,在声明它的块级作用域内可见,而在块级作用域外不可见。
function example() {let x = 10;if (true) {let y = 20;console.log(x); // 输出: 10}console.log(y); // 报错: y未定义
}
example();

  • const:也是在ES6中引入的关键字,用于声明常量。与let一样具有块级作用域,但声明的常量不可重新赋值,一旦赋值后就不能再改变。
const PI = 3.14159;
PI = 4; // 报错: 不能重新赋值常量const arr = [1, 2, 3];
arr.push(4); // 可行
arr[0] = 0; // 可行
arr = [4, 5, 6]; // 报错: 不能重新赋值常量

适合使用var的情况是在旧版本的JavaScript代码中或在需要在函数作用域内声明变量的情况下。

适合使用let的情况是在需要在块级作用域内声明变量的情况下。

适合使用const的情况是在需要声明不变的常量时,如数学常量或不需要重新赋值的变量。

json

在JavaScript中,JSON(JavaScript Object Notation)是一种用于存储和交换数据的轻量级数据格式。它使用简洁的文本表示,易于阅读和编写,并且可以被不同语言的程序解析和生成。

JSON由键值对构成,键使用双引号括起来,值可以是字符串、数字、布尔值、数组、对象或null。以下是一些JSON的示例:

  1. 字符串:
"Hello, World!"

  1. 数字:
42

  1. 布尔值:
true

  1. 数组:
[1, 2, 3, 4, 5]

  1. 对象:
{"name": "John","age": 30,"city": "New York"
}

  1. 嵌套对象:
{"name": "John","address": {"street": "123 Main St","city": "New York","state": "NY"}
}

  1. 空值:
null

在JavaScript中,我们可以使用内置的JSON对象来解析JSON字符串或将JavaScript对象转换为JSON字符串。

  1. 解析JSON字符串为JavaScript对象:
var jsonString = '{"name": "John", "age": 30, "city": "New York"}';
var jsonObject = JSON.parse(jsonString);
console.log(jsonObject.name); // 输出: "John"

  1. 将JavaScript对象转换为JSON字符串:
var person = {name: "John", age: 30, city: "New York"};
var jsonString = JSON.stringify(person);
console.log(jsonString); // 输出: '{"name":"John","age":30,"city":"New York"}'

通过JSON,在不同的系统之间可以轻松地传输和共享数据,它已经成为现代互联网开发中常用的数据格式。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/22851.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SAS:什么时候用kcompress呀?

问题:如何截取ECGTPT变量中的后三个字符? 下图展示了以k开头的以及非k开头的substr函数和length函数,发现在UTF-8编码下,仅以k开头的函数能够截取成功。 释疑(以下内容来自SAS Help) SAS提供的字符函数…

conflicting types for 错误问题

操作系统真象还原中,第十一章出现的问题: 怎样编译都会出现一个conflicting types for ’xxx‘的错误 出现这个错误的原因: 头文件声明和定义参数稍有不同 头文件中声明 void Hanlder(const char * buf); 在定义时写作 void Hanlder(char…

浏览器工作原理

主要分为导航、获取数据、HTML解析、css解析、执行javaScript、渲染树几个步骤。 1.导航 DNS查询 DNS服务器类似于电话簿,里面包含公共的IP地址以及相关主机名数据库,我们输入一个域名,他能帮我们映射到对应的IP地址。(第一次查…

【kubeflow文档】Kubeflow Training Operator

What is Training Operator Training Operator是一个Kubernetes原生项目,用于对使用各种ML框架(如PyTorch、TensorFlow、XGBoost等)创建的机器学习(ML)模型进行微调和可扩展的分布式训练。 用户可以将HuggingFace、Dee…

宜选影票api接口如何申请密钥和授权呢?

宜选影票API接口的密钥申请和授权过程一般包括以下步骤,以下将按照清晰的格式分点表示和归纳相关信息: 注册开发者账号: 前往宜选影票的官方网站或开发者平台。注册一个开发者账号,填写必要的个人信息和联系方式。申请API访问权限…

二刷算法训练营Day22 | 二叉树(8/9)

目录 详细布置: 1. 235. 二叉搜索树的最近公共祖先 2. 701. 二叉搜索树中的插入操作 3. 450. 删除二叉搜索树中的节点 详细布置: 1. 235. 二叉搜索树的最近公共祖先 给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共…

用这个AI工具,做公众号爆款图文,5分钟一篇10w+,居然这么简单!(附工具教程)

文章首发于公众号:X小鹿AI副业 大家好,我是程序员X小鹿,前互联网大厂程序员,自由职业2年,也一名 AIGC 爱好者,持续分享更多前沿的「AI 工具」和「AI副业玩法」,欢迎一起交流~ 之前X小鹿一直在各…

mac虚拟光驱工具:Daemon Tools for Mac

Daemon Tools for Mac是一款功能强大的虚拟光驱工具,它为用户提供了在Mac上模拟物理光驱的能力,从而方便用户处理各种光盘映像文件。以下是关于Daemon Tools for Mac的详细介绍: 守护进程工具:Daemon Tools不仅是一个简单的虚拟光…

Sass的简单总结

常见的 SASS 符号包括: 变量符号:在𝑆𝐴𝑆𝑆中,定义变量时需要使用在SASS中,定义变量时需要使用 符号,例如:$color-red: #ff0000; 扩展符号:&…

【讯为Linux驱动开发】2.注册一个字符设备

【问】如何描述一个字符设备? dev结构体 其中需要关心三个成员变量: 所属模块 :struct module *owner; 文件操作结构体: const struct file_operations *ops 设备号 : dev_t 当应用层使用指令open("/dev/hello&…

学生成绩管理系统(大一大作业)

功能 实现添加&#xff0c;排序&#xff0c;修改&#xff0c;保存等功能 库函数 #include<stdio.h> #include<stdlib.h> #include<windows.h> #include<string.h> 头文件 #define functioncreate(major) void major##compare(mana mn){\int i,j,s…

使用Matlab软件绘制函数图像

【实验目的】 1.利用Matlab实现平面上曲线和三维空间中曲线绘制&#xff0c;重点掌握隐函数、极坐标图像绘制的相关命令。 2.利用Matlab实现三维曲面绘制&#xff0c;加深对高等数学课程所学内容的理解 【实验内容与实现】 1、用两种方法绘制下面的曲线图 &#xff08;1&am…

Autodesk 3ds Max软件下载安装;3ds Max功能强大的三维建模、渲染软件安装包获取

3ds Max&#xff0c;无论是初学者还是资深设计师&#xff0c;都能通过3ds Max在数字世界中实现自己的创意&#xff0c;打造出令人惊叹的三维作品。 在3ds Max中&#xff0c;灯光系统是至关重要的一环。它提供了光度学灯光和标准灯光两种主要类型&#xff0c;用于照亮和增强场景…

Spring家族中的消息通信解决方案

相信大家对消息通信架构以及各种消息中间件应该都不陌生。在分布式系统的设计和开发过程中&#xff0c;消息通信是用于实现系统解耦、提高扩展性的一大技术体系。而业界关于如何实现消息通信系统也有很多解决方案和对应的开发框架。不知道你有没有发现&#xff0c;在我们每天都…

计算机英文教材太难啃?Higress 和通义千问帮你!

作者&#xff1a;张添翼&#xff08;澄潭&#xff09; 计算机相关英文教材的中译本质量堪忧&#xff0c;对于计算机专业的学生来说&#xff0c;应该深有体会。因为大部分教材的译者本人可能未必完全吃透书中技术内容&#xff0c;又或者是领域技术大拿&#xff0c;但并不擅长英…

数据结构的归并排序(c语言版)

一.归并排序的基本概念 1.基本概念 归并排序是一种高效的排序算法,它采用了分治的思想。它的基本过程如下: 将待排序的数组分割成两个子数组,直到子数组只有一个元素为止。然后将这些子数组两两归并,得到有序的子数组。不断重复第二步,直到最终得到有序的整个数组。 2.核心…

LabVIEW2017破解安装教程

LabVIEW2017破解安装教程&#xff1a; 1、新版LabVIEW2017分为32位和64位两个平台&#xff0c;多种语言版本(需要LabVIEW2017中文版的朋友请选择WinChn版本)&#xff0c;大家选择自行选择符合系统的版本下载并解压 2、本次安装以Win 7 64位系统为例&#xff0c;运行“2017LV-64…

龙蜥社区 5 月度运营大事件回顾

各位龙蜥社区的朋友们&#xff0c;你们好&#xff01; 龙蜥社区 5 月运营月报如期而至&#xff01;本次从特别图送、龙蜥生态、龙蜥活动、龙蜥 SIG 月度动态、精彩内容推荐等几方面总结、回顾了 5 月发生的重要事件。

设计模式之过滤器模式FilterPattern(十)

一、过滤器模式 过滤器模式&#xff08;Filter Pattern&#xff09;或标准模式&#xff08;Criteria Pattern&#xff09;是一种设计模式&#xff0c;这种模式允许开发人员使用不同的标准来过滤一组对象&#xff0c;通过逻辑运算以解耦的方式把它们连接起来。这种类型的设计模…

【Kotlin 三】封装/继承/多态 属性覆盖 类的扩展

1.封装/继承/多态 1.1 封装 一般&#xff0c;我们将类的属性都声明为private&#xff0c;在类中通过暴露一部分public的方法来供外部读写对象属性 class Student (private var name: String) {fun getName(): String {return name}fun setName(name: String) {this.name na…