如何将方法添加到对象的实例中
How to add methods to an instance of the object
例如,我有一个对象的实例:
A = function(){};
a = new A();
如何添加方法
{b: function(){ console.log('b') },
c: function(){ console.log('c') }
}
举个例子?
如果您想向实例添加方法,只需添加它们:
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");
您应该了解一下prototype
。
这里有一个很好的解释。
编辑:您还可以将原型设置为一系列函数,例如:
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"
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();
如果您可以使用库/框架,请查看jQuery.extend()
。
A = function(){};
a = new A();
d = {b: function(){ console.log('b') },
c: function(){ console.log('c') }
};
$.extend(a, d);
相关文章:
- 代码挑战:创建一个跟踪对象实例总数的类Foo
- 为什么属性存在于对象实例上,即使其原型发生了更改
- 如何在angularJS中获得对指令对象实例的引用
- 是否有将基于字符串的JSON转换为Mongoose Schema对象实例的本地功能
- 从对象实例中获取变量名称
- 了解 JavaScript 对象实例或工作流
- Javascript:在对象实例方法上使用apply()方法失败
- 多个对象实例发生干扰
- 确定javascript对象实例的类型
- 如何在Javascript中创建多个对象实例
- 在每个循环中创建对象实例
- javascript多个对象实例的时间戳相同
- 使用lodash'扩展JS对象实例;s的extend方法会导致奇怪的结果
- 避免在外部称为原型方法中丢失对象实例
- 不定义类的对象实例
- 对象实例中的方法不执行
- 像PHP一样使用json数组“水合”Javascript对象实例
- Javascript:父/子对象实例化的顺序
- 在 Angular.js 中跨应用程序使用相同的对象实例
- 对象引用未设置为 C# 中的对象实例