javascript - js中构造函数里this的指向问题
巴扎黑
巴扎黑 2017-04-11 12:47:26
[JavaScript讨论组]

1、在许多文献中关于this的指向 都是 谁调用这个方法 这个方法内的this就指向谁;可是为什么构造函数里面的this会指向实例呢,当然,我这里并不是调用的原型里面的方法。
2、代码如下:

function p(){
            console.log(this)
        }
 new p();
function fn(){
            console.log(this);
        }
 fn();

3、运行结果如下

4、这个结果应该怎么理解呢

巴扎黑
巴扎黑

全部回复(3)
迷茫

你说的只是四种情况之一。
构造函数的调用其中有几步是:

1.创建一个新对象;
2.将构造函数的作用域赋给新对象(因此this就指向了这个新对象);
3.执行构造函数中的代码;
4.返回新对象;
《JavaScript高级程序设计》6.2.2
重点是先改变this指向,再执行构造函数中的代码。

参考

高洛峰

当计算一个对象创建表达式的值时,和对象初始化表达式通过{}创建对象的做法一样,JavaScript首先创建一个新的对象,然后,JavaScript通过传入指定的参数并将这个新对象当作this的值来调用一个指定的函数。这个函数可以使用this来初始化这个新创建对象的属性。

--摘自<<JavaScript权威指南>> 4.6节

黄舟

new的步骤:

1、创建了一个新对象p
2、将新对象p的construtor指向构造函fucntion p(){console.log(this)};
3、把新对象p的prototype chain(原型链)→ 指向p.prototype(构造函数的原型对象)
4、执行构造函数p中的代码

所以是新对象p调用了这个构造函数,构造函数的this不指向新对象p指向谁?

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

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