向JavaScript对象添加方法

Adding methods to an JavaScript object

本文关键字:方法 添加 对象 JavaScript      更新时间:2024-05-13

我可以用一些方法创建一个对象,然后按如下方式添加一个属性:

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)