javascript方法中this的指向问题。
阿神
阿神 2017-04-10 15:43:37
[JavaScript讨论组]
  1. 在Javascript中,this关键字永远都指向函数(方法)的所有者。

  2. 如果没有进行特定的所有者,那么this指向window。

我的疑问是这两句话是否正确,能否提供示例说明这两句话不正确。

我觉得是对的,因为我见了很多例题,都能用上面的两句话说通。
但是有部分同学说上面的话是片面的,所以我想求证一下。

阿神
阿神

闭关修行中......

全部回复(3)
天蓬老师

func.apply() 或者
func.call()
将会更改函数中this关键字的指向

黄舟

js中this永远指向调用者,谁调用该函数,this就指向谁
//创建dog对象
var dog={name:'dog'};
//dog的walk方法
dog.walk=function(){

//这里的this也是指向调用者
console.log(this);
function a(){
    //这里的this指向调用者
    console.log(this);
};
//因为这里没有指定调用者,所以就隐式指定调用者为window对象
a();

};
//调用dog的walk方法
dog.walk();
这里dog.walk()中的this就指向dog对象
一般一个函数创建时都会附加给某个对象(也就是指定了函数的所有者),而没有指定调用者的情况下,该函数的调用者就为默认的window对象,同时可以通过function.call()与function.apply()来改变this的指向
对于上面的,可以这样
dog.walk.call(window);或者dog.walk.apply(window);来改变调用者为window
通过call()调用函数的语法格式为:
函数引用.call(调用者,参数1,参数2…)
通过apply()调用函数的语法格式为:
函数引用.apply(调用者,[参数1,参数2...]);

黄舟

你需要看看这个:http://www.cnblogs.com/TomXu/archive/2012/01/17/2310479.html
个人自己总结的:http://my.oschina.net/Karon/blog/495851
希望能帮到你,不谢~

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号