js 5.14 this的引用

Posted sophia

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js 5.14 this的引用相关的知识,希望对你有一定的参考价值。

5.14.1、this引用 的规则

在最外层的代码中,this引用的是全局对象

在函数内,this引用根据函数调用方式不同而有所不同

函数的调用方式this引用的引用对象

构造函数调用 所生成的对象
方法调用 接收方对象
apply或是call调用 有apply 或call的参数指定对象
其他的方式的调用 对象全局

通过点运算符或中括号运算符调用对象的方法时,在运算符左侧所指定对象
下面方法和接受对象的具体例子
var obj={
x:3,
doit:function(){
console.log("method is called"+this.x);
}
}
obj.doit();//method is called 3
obj[‘doit‘]();//method is called 3
首先是将对象的引用赋值给了变量obj。这个对象有两个属性,属性x的值是数值3,属性doit的值是一个函数,将该函数称为方法doit
可以通过点运算符或中括号运算符对obj调用方法doit。这时方法调用的目标的对象被称为接收方对象(也就是obj引用的对象是一个接收方对象)。被调用的方法内引用改接受方对象。

5.14.2 this引用的注意点接上面的例子继续
var fn=obj.doit;   //将obj.doit引用的Function对象赋值给全局变量
fn();                    //函数内this引用了全局对象
var x=5;             //确认this 引用全局对象
fn()  ;
var obj2={x:4,doit:fn};//将obj的方法(function对象的引用)赋值给了另一个对象obj2的属性
obj2.doit()//方法内的this引用对象obj2

技术分享

 

var obj={

x:15,
doit:function(){
console.log(this);
console.log("doit is called"+this.x);
this.doit2();      //如果写成doit(),则会在全局中搜索doit,则会报错  doit2 is not defined
},
doit2:function(){
console.log("doit2 is called"+this.x);

}


}
obj.doit();

技术分享

 

以上是关于js 5.14 this的引用的主要内容,如果未能解决你的问题,请参考以下文章

var me = this的实际意义,js将this引用赋值的意义

JS引用类型 --- 函数(含this指向面试题)

js中提到的dom引用是啥意思

何时使用inputRef.current而不是this.inputRef React.js?

在 Javascript 类中不使用 this 关键字引用的变量是不是引用全局变量?

js引用类型