簡體   English   中英

JavaScript:基於原型創建對象而不使用new + Constructor

[英]JavaScript: Creating objects based on a prototype without using new + Constructor

這可能嗎?

我的想法:原型本質上是構造函數的屬性(無論是本機構造函數,如Function,String或Object,還是您自己的自定義構造函數),只有'new'關鍵字能夠利用構造函數及其原型來創建對象

我錯過了什么嗎?

你是對的,但現在在ECMAScript第5版中, Object.create方法能夠使用另一個對象作為原型創建對象實例:

var proto = {foo: 1};
var obj = Object.create(proto);

在上面的例子中,將創建obj ,它將在[[Prototype]]內部屬性中包含對proto的引用,並且:

obj.foo; // 1
obj.hasOwnProperty('foo'); // false

這個方法來自2009年12月批准的新規范,到目前為止我已經看到Mozilla JavaScript 1.9.3實現了。

現在你可以像Douglas Crockford所建議的那樣模仿那個方法的行為:

if (typeof Object.create !== 'function') {
  Object.create = function (o) {
    function F() {}
    F.prototype = o;
    return new F();
  };
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM