向 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 方法。可以在 link 中找到 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)
我可以用一些方法创建一个对象,然后向其中添加一个 属性,如下所示:
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 方法。可以在 link 中找到 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)