javascript - 请教一个js中new构造函数中子函数的this问题-,-
ringa_lee
ringa_lee 2017-04-11 09:42:33
[JavaScript讨论组]
function F1(){
    function f2(names){
          this.name=names;
          alert(this);//window,!为什么这里this会指向window?F1在后面是用new构造函数的形式实例化instance不是作为普通函数执行啊!//
        }
    f2("nicholas");
    this.age=29;
    alert(this);//Object 这个我理解,这是new的特性,this指向instance//
}                
var instance=new F1();
console.log(instance.name);//undefined,因为上面F1中没赋到值//
console.log(instance.age);//29//
console.log(window.name);//nicholas//
ringa_lee
ringa_lee

ringa_lee

全部回复(3)
怪我咯

在你的f2方法中没有指定是否是严格模式,其中的this默认就指向了window,然后直接this.name就修改了window.name的值。

就这样。

给你篇我的博客文章,加深你的理解。
js中this的一些总结

阿神

因为你的f2方法没有实例化,所以this指向的是window。如果你想将this指向F1实例的话你可以用call/apply来调用。

f2.call(this, "nicholas");
f2.apply(this, ["nicholas"]);
天蓬老师

this的几种调用
f2属于函数调用,默认指向全局(这个 js作者规定的,你只能这样记住它)

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

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