首页 > 编程语言 >JavaScript this全解析

JavaScript this全解析

时间:2022-11-01 16:35:59浏览次数:37  
标签:obj1 foo name JavaScript 函数调用 p1 var 解析


​JavaScript​​​中的​​this​​只有如下几种情况,并按他们的优先级从低到高划分如下:

独立函数调用,例如 ​​getUserInfo()​​​,此时 ​​​this​​​指向全局对象 ​​​window​

对象调用,例如 ​​stu.getStudentName()​​​,此时 ​​​this​​​指向调用的对象 ​​​stu​

​call()​​​、 ​​​apply()​​​和 ​​​bind()​​​改变上下文的方法, ​​​this​​​指向取决于这些方法的第一个参数,当第一个参数为 ​​​null​​​时, ​​​this​​​指向全局对象 ​​​window​

箭头函数没有 ​​this​​​,箭头函数里面的 ​​​this​​​只取决于包裹箭头函数的第一个普通函数的 ​​​this​

​new​​​构造函数调用, ​​​this​​永远指向构造函数返回的实例上,优先级最高。


var name = 'global name';
var foo = function() {
console.log(this.name);
}
var Person = function(name) {
this.name = name;
}
Person.prototype.getName = function() {
console.log(this.name);
}
var obj = {
name: 'obj name',
foo: foo
}
var obj1 = {
name: 'obj1 name'
}

// 独立函数调用,输出:global name
foo();
// 对象调用,输出:obj name
obj.foo();
// apply(),输出:obj1 name
obj.foo.apply(obj1);
// new 构造函数调用,输出:p1 name
var p1 = new Person('p1 name');
p1.getName();


this解析流程图

JavaScript this全解析_javascript


 

标签:obj1,foo,name,JavaScript,函数调用,p1,var,解析
From: https://blog.51cto.com/sourcebyte/5814237

相关文章

  • JavaScript类型转换
    ​​JavaScript​​中,类型转换只有三种:转换成数字转换成布尔值转换成字符串经典类型面试题console.log([]==![]);//true代码分析:左侧是一个对象(数组)右侧是一个布尔值,对......
  • Java表达式解析器
    1、阿里巴巴QLExpresshttps://github.com/alibaba/QLExpress/blob/master/README.md由阿里的电商业务规则、表达式(布尔组合)、特殊数学公式计算(高精度)、语法分析、脚本二......
  • JavaScript 可选链运算符
    可选链运算符(?.)允许读取位于连接对象链深处的属性的值,而不必明确验证链中的每个引用是否有效。?.运算符的功能类似于.链式运算符不同之处在于,在引用为空(nullish)(n......
  • GDB Remote Serial Protocol —— RSP协议解析
    简介这篇文章翻译看看也是不错的    https://tatsuo.medium.com/implement-gdb-remote-debug-protocol-stub-from-scratch-3-e87a697ca48c    GDB......
  • 为什么选择高防DNS云解析?(一)-中科三方
    DNS(domainnameserver, 域名服务器)是互联网的一项核心服务,是进行域名与之对应的IP地址之间转换的系统,可将易于记忆的域名转换为方便服务器识别的用于互连通信的数字IP地......
  • JavaScript特殊语法和JavaScript流程控制语句
    6.流程控制语句: 1.if...else... 2.switch: *在java中,switch语句可以接受的数据类型:byteintshorchar,枚举(1.5),String(1.7) ......
  • JavaScript语法逻辑运算符和JavaScript三元运算符
    5.逻辑运算符 &&||! *其他类型转boolean:1.number:0或NaN为假,其他为真2.string:除了空字符串(""),其他都是true......
  • org.apache.commons.lang3 StringUtils 解析
    字符串是在程序开发中最常见的,ApacheCommons开源项目在org.apache.commons.lang3包下提供了StringUtils工具类,该类相当于是对jdk自带的String类的增强,主要做了几方面的处......
  • dns解析
    一、根据域名服务器作用,分为四种:1.根域名服务器,只要本地域名服务器无法解析,会首先求助于根域名服务器2.顶级域名服务器(TLD服务器/二级域名服务器),负责管理二级......
  • Hive系列之解析JSON数据
    概述在数据处理中,经常遇到的一个数据类型就是JSON,MySQL数据库解析JSON,参考​​MySQL5.7JSON函数学习​​,​MySQLjson_mergewithgroupby​​。在大数据执行引擎Hive中,......