揭秘 JavaScript 中新运算符的内部工作原理
JavaScript 的误解领域,类似于原型链,揭示了一个基本查询:“new”运算符如何编排对象创建,定义其沿袭和核心属性?
new 的本质
要解开这个谜团,请考虑另一个示例:
function NEW(f) { var obj, ret, proto; // Examine `f.prototype` proto = Object(f.prototype) === f.prototype ? f.prototype : Object.prototype; // Inherit from `proto` obj = Object.create(proto); // Invoke `f` with `obj` as `this` ret = f.apply(obj, Array.prototype.slice.call(arguments, 1)); // Determine return type if (Object(ret) === ret) { // Object returned? return ret; } // Otherwise, return inherited object return obj; }
理解机制
新算子依赖于内部[[Construct]]机制,该机制:
实际应用
说明这个概念的力量:
function Foo(arg) { this.prop = arg; } Foo.prototype.inherited = 'baz'; var obj = NEW(Foo, 'bar');
这将创建一个继承自 Foo 的对象,具有“继承”继承属性,以及值为“bar”的“prop”属性。
以上是JavaScript 中的 new 运算符如何创建对象并建立其继承关系?的详细内容。更多信息请关注PHP中文网其他相关文章!