我們可以在創建對象的函數中直接吸收其他對象的功能,然後對其進行擴展並返回。 下麵,我們用對象表示法第一個普通對象,這是它還看不出有任何被寄生的可能性: 然後我們就用來編寫用於創建triangle對象的函數。 1. 將twoD對象克隆進一個叫做that對象,這一步可以使用我們之前所討論過的任何方法,例 ...
我們可以在創建對象的函數中直接吸收其他對象的功能,然後對其進行擴展並返回。
下麵,我們用對象表示法第一個普通對象,這是它還看不出有任何被寄生的可能性:
var twoD = { name: 'Anna', dimensions: 2 }
然後我們就用來編寫用於創建triangle對象的函數。
1. 將twoD對象克隆進一個叫做that對象,這一步可以使用我們之前所討論過的任何方法,例如使用Object()函數或者執行全屬性拷貝。
2. 擴展that對象,添加更多屬性。
3. 返回that對象。
之前的object()全屬性拷貝函數:
function object(o){ var n; function(){}; F.prototype = o; n = new F(); n.uber = o; return n; }
triangle()對象函數;
function triangle(s, h){ var that = object(twoD); that.name = 'Joke'; that.getArea = function(){ return this.side * this.height / 2; } that.side = s; that.height = h; return that; }
由於triangle()只是個一般函數,不屬於構造器,所以調用她通常是不需要new操作符的。由於即使錯誤的使用了new操作符,但由於返回的是一個對象,那她也會按照預定的方式工作。
var t = triangle(5, 10); t.dimensions; // 3; var t2 = new triangle(5,5); t2.getArea(); // 12.5
A哥鎮樓: