首頁  >  文章  >  web前端  >  JavaScript 中的 new 運算子如何建立物件並建立其繼承關係?

JavaScript 中的 new 運算子如何建立物件並建立其繼承關係?

Linda Hamilton
Linda Hamilton原創
2024-10-27 01:46:30615瀏覽

How Does the `new` Operator in JavaScript Create Objects and Establish Their Inheritance?

揭秘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;
}

理解機制

理解機制
  1. 理解機制
  2. 理解機制

理解機制

新算子依賴內部[[Construct]]機制,該機制:

function Foo(arg) {
  this.prop = arg;
}
Foo.prototype.inherited = 'baz';

var obj = NEW(Foo, 'bar');

建立一個原生物件。

將其 [[Prototype]] 設定為函數的原型或 Object.prototype(如果原型是原始類型)。 使用物件作為「this.prototype」呼叫函數。 "如果函數返回原語,則返回內部創建的對象;如果返回對象,則返回函數返回的對象。實際應用說明這個概念的力量:這將建立一個繼承自Foo 的對象,具有「繼承」繼承屬性,以及一個值為「bar」的「prop」屬性。 >

以上是JavaScript 中的 new 運算子如何建立物件並建立其繼承關係?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn