[英]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.