new 运算符如何在 JavaScript 中创建和初始化对象
new 运算符是 JavaScript 中用于创建新对象的强大关键字。它在面向对象编程中起着至关重要的作用,但要完全理解它可能具有挑战性,特别是在原型链方面。
理解新的 Operator
使用时使用带有函数的 new 运算符,内部会发生以下步骤:
示例实现
为了演示 new 运算符的功能,这是一个等效的实现:
<code class="javascript">function NEW(f) { let obj, ret, proto; // Check if `f.prototype` is an object proto = f.prototype ? f.prototype : Object.prototype; // Create an object inheriting from `proto` obj = Object.create(proto); // Call the function with `obj` as `this` ret = f.apply(obj, Array.prototype.slice.call(arguments, 1)); // Return the object from the function or the newly created `obj` return Object(ret) === ret ? ret : obj; }</code>
示例用法
考虑这个示例:
<code class="javascript">function Foo(arg) { this.prop = arg; } Foo.prototype.inherited = 'baz'; let obj = NEW(Foo, 'bar'); console.log(obj.prop); // Output: "bar" console.log(obj.inherited); // Output: "baz" console.log(obj instanceof Foo); // Output: true</code>
这演示了 new 运算符如何创建对象继承自函数的原型,并允许访问其属性和方法。
以上是'new”运算符如何在幕后工作以创建和初始化 JavaScript 中的对象?的详细内容。更多信息请关注PHP中文网其他相关文章!