首页 > Web开发 > 详细

js中this指向

时间:2019-08-19 11:47:27      阅读:75      评论:0      收藏:0      [点我收藏+]

参考文献: https://juejin.im/entry/5a20d18af265da43062a9031

5大规则

(1) 如果 new 关键词出现在被调用函数的前面,那么JavaScript引擎会创建一个新的对象,被调用函数中的this指向的就是这个新创建的对象。

function fn () {
    this.age = 10;
    console.log(this);
}

let a = new fn();   //fn {age:10}

(2) 如果通过apply、call或者bind的方式触发函数,那么函数中的this指向传入函数的第一个参数。

function hello () {
    console.log(this);
}

var obj = {
    value: 5
}

hello.call(obj);     // {value:5}
hello.apply(obj);  // {value:5}
hello.bind(obj)();   // {value:5}

(3) 如果一个函数是某个对象的方法,并且对象使用句点符号触发函数,那么this指向的就是该函数作为"那个对象的属性"的对象,也就是,this指向句点左边的对象。

var obj = {
    value: 5,
    printThis: function() {
      console.log(this);
    }
};

obj.printThis();   //{value:5, printThis:f}

(4) 如果一个函数被传给一个变量后,调用,this指向全局对象,在浏览器中,即是window。

var obj = {
    value: 5,
    printThis: function() {
      console.log(this);
    }
};

let sayThis = obj.printThis;
sayThis();    // window {......}

(5) 如果出现上面对条规则的累加情况,则优先级自1至4递减,this的指向按照优先级最高的规则判断。

var obj1 = {
    value: ‘hi‘,
    print: function() {
        console.log(this);
    },
};

new obj1.print();  //print {}

 

js中this指向

原文:https://www.cnblogs.com/ceceliahappycoding/p/11375495.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!