2011-04-29 45 views
0

很抱歉,如果這是某處回答(很可能如此),但我不是很清楚如何甚至要求它正確,因此未能在搜索:(的javascript:與多個對象原型

基本上我想做這樣的事情:。

(a||b).prototype.c = function() { 
    // do something 
} 

基本上a和b是對象的一種或其它會存在,但不能同時但我不知道這會存在,但我需要添加一個方法來哪一個

現在,我知道我可以做這樣的事情:

if (typeof(a) == 'object') { 
    a.prototype.c = c; 
} else if (typeof(b) == 'object') { 
    b.prototype.c = c; 
} 

function c() { 
    // do something 
} 

但是這有一個問題是c在全局級別有它自己的命名空間,我不想這樣做。我不希望c在任何時候在全球範圍內擁有自己的命名空間。

Soo ...顯然上面的代碼的第一位不起作用。我將如何去做這件事?或者是這樣的事情根本不可能?請隨時關閉並指出我在正確的方向,如果這之前已經回答了...

+0

其實,我覺得我的第一件事情做的工作,如果我刪除原型部分,因爲我將c添加到實例化對象中,而不是原型化類,對吧? – webnoobie09423324 2011-04-29 14:50:21

+0

類型,原型用於訪問對象的類型,跳過它,然後訪問實際的對象。 – Onkelborg 2011-04-29 14:51:54

+0

是的我正在處理2個實際的對象,所以我認爲我實際上不應該原型設計。顯然(a || b).c = function(){..}確實有效! – webnoobie09423324 2011-04-29 14:53:30

回答

0

我覺得這樣的事情會解決你的問題:

(function() { 
    var f = function() { 
    //Prototype function 
    }; 
    if(a) 
    a.prototype.f = f; 
    if(b) 
    b.prototype.f = f; 
})(); 
+0

嗯,是啊,我認爲這應該工作,如果我想這樣做,但我認爲事實上我根本不需要原型,因爲我試圖添加一個方法到一個實例化對象或另一個。但是我仍然好奇我將如何在一個課程或另一個課程上進行原型設計,我要去標記,因爲這確實回答了這個問題,謝謝! – webnoobie09423324 2011-04-29 14:59:35