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中文網其他相關文章!