在JavaScript中扩展具有多个属性的对象

use*_*411 13 javascript object

我有一个具有多个属性和函数的全局JavaScript对象,我正在以这种方式创建它:

myObject = {};
Run Code Online (Sandbox Code Playgroud)

我认为我可以通过创建这样的东西轻松扩展这个对象

myObject = { propA1 : null, ....., propAN : null};
Run Code Online (Sandbox Code Playgroud)

代替

myObject.propA1 = null;
myObject......;
myObject.propAN = null;
Run Code Online (Sandbox Code Playgroud)

我的做法有什么问题?

SLa*_*aks 14

当你写作时myObject = { ... },你正在创建一个全新的对象并设置myObject为指向它.
以前的值myObject被扔掉了.

相反,你可以使用jQuery:

jQuery.extend(myObject, { newProperty: whatever });
Run Code Online (Sandbox Code Playgroud)

  • OP询问了Javascript,而不是jquery.它也不会真正学习Javascript对象. (4认同)

bea*_*mit 13

没有jQuery,你可以用这样的东西创建一个对象数组:

[{'key': 'atuhoetu', 'value': 'uehtnehatn'},{...}]
Run Code Online (Sandbox Code Playgroud)

如果你不关心兼容性,最近的浏览器应该支持这个:

var newObj = {prop1: 'val', prop2: 'val'};
Object.keys(newObj).forEach(function (item) {
    myObject[item] = newObj[item];
});
Run Code Online (Sandbox Code Playgroud)

这将迭代newObject中的所有项目并将它们添加到myObj.

  • 是的,我想这只取决于你是否使用jQuery.我使用服务器端的JavaScript,这允许代码在服务器和客户端上使用... (3认同)