我有一個JavaScript對象,做這樣的事情 - 用封閉來模擬私人與公共函數/變量:JS原型VS封
var myCoolObject = function(x, y) {
var prop1 = "a cool prop1 value";
var negX = x * -1;
var negY = y * -1;
var xyProduct = x * y;
return {
PublicProp1: prop1,
getXYProduct: function() { return xyProduct; },
getNegX: function() { return negX; },
getNegY: function() { return negY; }
}
}
我將創建4000左右這個目標的情況下,從我正在讀通過prototype
增加功能會比加入他們,因爲我有以上(更有效,因爲在我的例子,每個實例都會有它自己的getXYProcust()
,getNegX()
和getNegY()
功能
我的問題是雙重的 - 是我以上方法真的是「低效率」?我意識到低效率是一個相對的術語 - 但這是我可能會注意到的。如果效率低下,我將如何將這些函數添加到myCoolObject
的prototype
?我試過如下:
myCoolObject.prototype.protoProp = "pppp";
myCoolObject.prototype.getAtMeBro = function() { return "get at me bro"; };
var myInstance = new myCoolObject(5, 10);
但無論protoProp
也不是「getAtMeBro()」是myInstance
特性,當我檢查它。
在此先感謝您的幫助 - 我很感激!
構造函數現在看起來如何?確保你沒有返回任何東西(或者只是'this')。 – 2012-02-15 16:29:15
我不確定我是否理解這個問題?當我實例化它時,構造函數看起來像new myCoolObject(5,10)。 – MattW 2012-02-15 16:38:44
不,構造函數是與'new'關鍵字一起使用的函數,如'function myCoolObject(){}' – 2012-02-15 16:43:09