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
网友评论