Javascript:设置对象属性
我希望能够做到这一点:Javascript:设置对象属性,javascript,object,set,Javascript,Object,Set,我希望能够做到这一点: var user1 = { name: 'John', gender: 'male' } var user2 = { name: 'James', gender: 'male', email: 'james@gmail.com' } user1.someSetMethod({email: 'john@gmail.com'}); user2.someSetMethod({name: 'Jenny', gender: 'female'}); var
var user1 = {
name: 'John',
gender: 'male'
}
var user2 = {
name: 'James',
gender: 'male',
email: 'james@gmail.com'
}
user1.someSetMethod({email: 'john@gmail.com'});
user2.someSetMethod({name: 'Jenny', gender: 'female'});
var user1 = {
name: 'John',
gender: 'male',
email: 'john@gmail.com'
}
var user2 = {
name: 'Jenny',
gender: 'female',
email: 'james@gmail.com'
}
期望的结果:
var user1 = {
name: 'John',
gender: 'male'
}
var user2 = {
name: 'James',
gender: 'male',
email: 'james@gmail.com'
}
user1.someSetMethod({email: 'john@gmail.com'});
user2.someSetMethod({name: 'Jenny', gender: 'female'});
var user1 = {
name: 'John',
gender: 'male',
email: 'john@gmail.com'
}
var user2 = {
name: 'Jenny',
gender: 'female',
email: 'james@gmail.com'
}
我想要一个方法,它将根据传递到函数中的内容设置属性。属性不存在我希望创建它,如果它存在,我希望它被覆盖
Javascript中是否存在类似的方法?不,您不想这样做 向所有对象添加方法的唯一方法是扩展
Object.prototype
这样做(在像IE8这样的ES3浏览器中)会导致向枚举添加属性
例如:
Object.prototype.extend = function (o) {
// clone properties of o into this
};
var someObj = {};
for (var key in someObj) {
console.log(key); // "extend"
}
最好使用Object.extend
Object.extend(user2, {
name: "Jenny",
gender: "female"
});
具有extend
的实现,或者您可以使用:
Object.extend = function (target, source) {
for (var key in source) {
target[key] = source[key];
}
};
这通常称为扩展对象。实际上,每个JavaScript库都有自己的方法来实现这一点。或者,您也可以用几行代码编写自己的代码
var user1 = {
name: 'John',
gender: 'male'
};
$.extend(user1, {
email: 'john@gmail.com'
});
user1.email === 'john@gmail.com'; //true
如果您愿意使用jquery,那么可以使用它的extend方法,以及一些默认值,以确保正确设置所有需要的属性 大概是这样的:
function whatever(obj1) {
var defaults = {
name: 'Foo Bar',
email: 'email@example.com',
gender: 'male'
};
return $.extend(defaults, obj1);
}
jQuery有一个非常好的扩展方法:@pagewil:\我告诉你你想做的事情是不明智的,但是你可以使用另一种方法。谢谢,这是更详细的:)我实际上在NodeJS上下文中需要它,应该在前面提到过。@pagewil
require(“pd”).extendNatives()
;)或者在简单的JS中:var user1={name:'John',gender:'male'};用户1[“电子邮件”]=“john@gmail.com";代码>