基本上在第一個例子中,你聲明瞭一個object literal,它實際上已經是一個對象實例。
在第二個示例中,您可以定義一個構造函數,該函數可以與new
運算符一起使用來創建對象實例。
對象文字也可以用來創建對象的新實例並做原型繼承,道格拉斯克羅克福德也提倡這種技術。
基本上你可以有一個object
操作:
function object(o) {
function F() {}
F.prototype = o;
return new F();
}
這個輔助功能可以在一個非常直觀和方便的方式使用。
它主要接收對象作爲參數,將創建一個新的對象實例功能裏面,舊的對象是鏈新對象的原型,它的返回。
它可以像這樣使用:
var oldObject = {
firstMethod: function() { alert('first'); },
secondMethod: function() { alert('second'); },
};
var newObject = object(oldObject);
newObject.thirdMethod = function() { alert('third'); };
var otherObject = object(newObject);
otherObject.firstMethod();
你可以走得更遠,只要你想,從之前定義的對象作出新的實例。
推薦:
來源
2009-08-08 06:48:52
CMS
這對我來說也是一個很好的問題,感謝張貼。 – 2009-08-08 07:02:37
關於編輯中的問題,取決於你想要做什麼。如果您只有對象的一個副本,請使用第一種語法。如果想要創建多個副本(比如'Something'是其他語言的'Class'),可以使用第二種語法(或者實際上是一個編輯過的版本,在其中使用'this.sayHi =函數(){...}',這是常態)。 – 2009-08-08 07:07:49