例如,我有一个对象的实例:
A = function(){};
a = new A();
如何添加方法
{b: function(){ console.log('b') },
c: function(){ console.log('c') }
}
以实例a?
答案 0 :(得分:2)
你应该看看prototype
。
Here是一个很好的解释。
编辑:您还可以将原型设置为一系列函数,例如:
var Person = new function() {};
methods = {
"methodA": function() {alert("method A")},
"methodB": function() {alert("method B")},
}
Person.prototype = methods
p = new Person()
p.methodA(); // Alerts "method A"
答案 1 :(得分:2)
如果要向实例添加方法,只需添加它们:
a.methodA = function() {
alert("method A");
};
您可以使用任何对象执行此操作。但是,您也可以将它们添加到实例的原型中,这将允许在所有其他实例上显示相同的方法:
var a = new A(),
b = new A();
a.prototype.methodA = function() {
alert("method A");
};
b.methodA();
如果要一次添加多个方法,请创建混合函数或使用框架:
function mix(a, b, typ) {
var n, o;
for (n in b) {
if (! b.hasOwnProperty(n)) continue;
if (!!(o = b[[n]) && (! typ || typeof o === typ)) {
a[n] = o;
}
}
}
则...
var a = new A();
mix(a, {
"methodA": function() {
alert("method A");
},
"methodB": function() {
alert("method B");
}
}, "function");
答案 2 :(得分:0)
Prototype用于向特定类型对象的所有实例添加方法(对内存管理很有用)。如果您只想将方法添加到对象的一个实例,则可以像添加任何属性一样添加它们:
var A = function() {
//......
}
var myA = new A();
myA.methodOne = function() { console.log('called methodOne on myA'); }
myA.methodTwo = function() { console.log('called methodTwo on myA'); }
myA.methodOne();
myA.methodTwo();
答案 3 :(得分:0)
如果您对使用库/框架感到满意,请查看jQuery.extend()
。
A = function(){};
a = new A();
d = {b: function(){ console.log('b') },
c: function(){ console.log('c') }
};
$.extend(a, d);