常见面试题 -- this的指向

eg:

var number = 50;
var obj = {
  number: 60,
  getNum: function () {
    var number = 70;
    return this.number;
 }
}; 

console.log(obj.getNum());//60     this的指向为obj
        
console.log(obj.getNum.call());//50     this 指向的是全局对象,实际上就是通过call的首个参数修改了对象函数的this 值
        
console.log(obj.getNum.call({number:20})); //20   this 指向的是全局对象,后参数定义了全局对象的number

 扩展:

var newObj = { number : 666 }

obj.getNum.call(newObj,"22") //666

.call中首参数有值则改变了this指向,此时this指向为newObj,后参数为传参

若首参数无或为null,则this指向全局对象

posted @ 2022-07-06 16:21  阳光下的向日葵  阅读(66)  评论(0)    收藏  举报