javascript - 关于this指向
本文介绍了javascript - 关于this指向的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
var c = {
name: 'The c object',
log: function() {
this.name = 'Updated c object';
console.log(this);
var setname = function(newname) {
this.name = newname;
console.log(this);
}
setname('Updated again! The c object');
console.log(this);
}
}
c.log();
第二个console.log为什么是指向window???
解决方案
this的指向分为四种
1、作为对象的方法调用;
2、作为普通函数调用;
3、构造器调用;
4、Function.prototype.call 或 Function.prototype.apply调用
(1)作为对象的方法调用,此时this指向该对象;
(2)作为普通函数调用,此时指向全局对象window对象
(3)构造器调用
JS没有类,需要构造器来创建对象。除了宿主提供的函数,大部分JS函数都可以当做构造器使用。构造器跟普通函数一模一样,区别在于调用方式。当用new运算符调用函数时,函数会返回一个对象,通常情况下,构造器的this指向返回的这个对象。
var MyClass = function(){
this.name = ‘seven’;
}
var obj = new MyClass();
alert( obj.name );
(4) call ,apply和bind,this的指向为传入的第一个参数(自定义this指向)
这篇关于javascript - 关于this指向的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文