2019-09-11 JavaScript中的new

nmd上如是说,翻译过来:
1、创建一个空的、原始的对象
类似:

空的原始的对象的 构造函数是 Object

2、把新创建的对象和另一个对象关联起来
先做个验证:

    function constructorObj()
    {
    }
    
    constructorObj.prototype = { constructor:"test"};
    
    objNew = new constructorObj();
constructorObj {}
objNew.constructor
"test"
//可见constructor是从__proto__ 中查找获取的,而非对象的一个属性

关联的意思是:
把新创建的对象的 __proto__ 属性设置为 constructor 的prototype属性;

3、把新生成的对象作为 this,即调用上下文

4、执行函数中的代码块,默认情况下将this作为返回值返回。
注:此时的作用域链为: 新生成对象所在作用域链-函数局部变量对象

注:实践和mdn上的阐述略有出入,主要在第2点

参考:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/new
https://content.pivotal.io/blog/javascript-constructors-prototypes-and-the-new-keyword

https://stackoverflow.com/questions/9468055/what-does-new-in-javascript-do-anyway

https://www.cnblogs.com/faith3/p/6209741.html

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容