在 JavaScript 复杂性的深处隐藏着一个神秘的构造,因其潜在的令人困惑的潜力而闻名:“new”操作员。它的阴暗运作方式与原型链并存,让许多人迷失在代码的迷宫中。
深入研究 New Operator 的机制
揭开“新算子”的秘密" 操作符,让我们剖析一下它错综复杂的操作:
替代镜头
进一步阐明神秘的“新”运算符,让我们探索一个反映其操作的替代实现:
<code class="javascript">function NEW(f) { var obj, ret, proto; // Prototype verification proto = Object(f.prototype) === f.prototype ? f.prototype : Object.prototype; // Object inheritance from `proto` obj = Object.create(proto); // Function invocation with object as "this" ret = f.apply(obj, Array.prototype.slice.call(arguments, 1)); // Object return if (Object(ret) === ret) { return ret; } return obj; } // Demonstration: function Foo(arg) { this.prop = arg; } Foo.prototype.inherited = 'baz'; var obj = NEW(Foo, 'bar'); console.log(obj.prop); // 'bar' console.log(obj.inherited); // 'baz' console.log(obj instanceof Foo); // true</code>
这段代码充当灯塔,阐明“新”运算符如何在幕后勤勉地履行其职责。
以上是JavaScript'new”运算符如何发挥其魔力?的详细内容。更多信息请关注PHP中文网其他相关文章!