向JavaScript对象添加方法
Adding methods to an JavaScript object
我可以用一些方法创建一个对象,然后按如下方式添加一个属性:
var myObj = (function () {
var my = {};
my.method1=function(){}
my.method2=function(){}
my.method3=function(){}
return my;
}());
myObj.myProperty=123;
如何先创建对象并添加属性,然后再添加方法?
myObj={};
myObj.myProperty=123;
//How do I add the above methods to myObj?
我想有两种解决方案:
合并对象:
var myObj = {...};
// ...
var objWithMethods = (function() { ... }());
Object.assign(myObj, objWithMethods);
(Object.assign
是一个ES6方法。可以在链接中找到polyfill,库通常也提供具有类似行为的方法)。
传递方法应分配给的对象作为参数:
var myObj = {};
myObj = (function (obj) {
var my = obj || {};
my.method1=function(){}
my.method2=function(){}
my.method3=function(){}
return my;
}(myObj));
您可以使用现有对象执行扩展操作
var myObj = {...}
var myAdditionalMethods = { someMethod : function(){ } }
//extend the object
for(var i in myAdditionalMethods)
if(!myObj.hasOwnProperty(i))
myObj[i] = myAdditionalMethods[i];
有很多库都内置了这一功能,但如果没有一个
即使原型也可以将函数添加到原始对象中。
var myObj = function() {
this.myProperty = 123;
}
myObj.prototype.method1 = function method1() {
alert("method1")
}
myObj.prototype.method2 = function method2() {
alert("method2")
}
var newObj = new myObj();
newObj.method1();
newObj.method2();
console.log(newObj)
相关文章:
- 如何在Angular单元测试中从另一个控制器的rootScope将方法添加到rootScope中
- 如何将onChange方法添加到ExtJS 4表单中的所有字段(textField)中
- 如何向.apply()方法添加回调
- 向 Firebase “push” 方法添加时间戳
- jQuery方法添加一个TextBox
- 如何将方法添加到Html5画布
- 什么'在javascript中将新方法添加到对象中的区别是什么
- 如何在角度控制器中为该方法添加验证
- 是否可以将方法添加到空值的原型中
- 如何使用 util 将方法添加到模块 express() 中
- 在 JavaScript 中隐式地将方法添加到构造函数的原型中
- 如何将另一个方法添加到Pinterest按钮的onlick事件中
- 将方法添加到数字引发异常
- 向方法添加方法
- 通过下拉列表框上的 appendChild 方法添加的项目不会显示在 IE8 下
- 如何将实例方法添加到帆中的所有模型.js
- 为什么我的javascript .push方法添加了太多对象
- 分机.js确认方法添加新行字符
- 使用原型将新方法添加到JScrollPane
- 我想克隆一个 javascript 类. 将方法添加到克隆的属性中,而不实际覆盖现有方法