2011-04-29 70 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