你必须知道的Javascript知识点之"this指针"的应用_Javascript教程-查字典教程网
你必须知道的Javascript知识点之"this指针"的应用
你必须知道的Javascript知识点之"this指针"的应用
发布时间:2016-12-30 来源:查字典编辑
摘要:很多人都知道this指针,这篇文章的主要目的是为了培训我们公司的新人。默认的this指针指向规则1this指针默认指向方法调用时为其指定的对...

很多人都知道this指针,这篇文章的主要目的是为了培训我们公司的新人。

默认的this指针指向

规则1

this指针默认指向方法调用时为其指定的对象,如:obj.fun(),fun方法体中的this指针指向obj。

复制代码 代码如下:

var user = { name: '段光伟' };

user.getName = function(){ return this.name; };

user.getName(); //返回‘段光伟'

复制代码 代码如下:

var user = { name: '段光伟' };

user.getName = function(){ return this.name; };

user.getName(); //返回‘段光伟'

window.name = '李妞妞';

window.getName = user.getName

window.getName(); //返回‘李妞妞'

getName(); //返回‘李妞妞'

规则2

如果在方法调用时没有为方法指定对象则this指针默认指向window,如:fun(),fun方法体中的this指针指向window。

复制代码 代码如下:

var fun = function(){

return this;

}

fun(); //返回window对象

规则3没有在方法体中的代码可以看作执行在一个匿名方法,根据规则2可以推论出其this指针指向window。

this //window对象

改变this指针的默认指向

使用apply

复制代码 代码如下:

var user = { name: '段光伟' };

user.hi= function(message){ return this.name+':'+message; };

window.name = '李妞妞'

user.hi('你好'); //输出‘段光伟:你好'

user.hi.apply(window, ['你好']); //输出‘李妞妞:你好'

使用call

复制代码 代码如下:

var user = { name: '段光伟' };

user.hi= function(message){ return this.name+':'+message; };

window.name = '李妞妞'

user.hi('你好'); //输出‘段光伟:你好'

user.hi.call(window, '你好'); //输出‘李妞妞:你好'

构造函数中的this指向

构造函数中的this指针默认指向执行正在构造的对象。

复制代码 代码如下:

var User = function(name){

this.name = name;

};

User.prototype.hi = function(){

return this.name;

};

var user = new User('段光伟');

user.hi(); //输出‘段光伟'

最后的小测试

猜猜最后的输出时什么?

复制代码 代码如下:

var User = function(name){

this.name = name;

};

User.prototype.hi = function(){

return this.name;

};

var user = new User('段光伟');

user.hi(); //输出‘段光伟'

var hi = user.hi;

hi(); //猜猜这里的输出

相关阅读
推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
  • 大家都在看
  • 小编推荐
  • 猜你喜欢
  • 最新Javascript教程学习
    热门Javascript教程学习
    编程开发子分类