设置对象属性javascript
我不确定这是否可能,但你们可以说:设置对象属性javascript,javascript,arrays,properties,Javascript,Arrays,Properties,我不确定这是否可能,但你们可以说: var tricky = function(obj){ var ret = new Object(); ret.porp1 = 'undefined'; ret.prop2 = 'undefined'; for (porp in ret){ if (obj.hasOwnProperty(prop) == false){ obj.???????? = prop; } return obj; } tricky({prop
var tricky = function(obj){
var ret = new Object();
ret.porp1 = 'undefined';
ret.prop2 = 'undefined';
for (porp in ret){
if (obj.hasOwnProperty(prop) == false){
obj.???????? = prop;
}
return obj;
}
tricky({prop1:'ok_prop'});
===>>{prop1:'ok_prop',prop2:'undefined'}
我没有用语言提出这个问题,因为我发现很难正确地定义。我的问题是,正如您所看到的:我有一个对象,有时我在该对象中设置了一些属性,有时没有。我想要一个函数,它将检查我的对象是否有一系列属性,如果没有,则显式地将其设置为未定义。如果我将其隐式地保留为未定义,则它将不起作用,因为我使用它将其发送到jade模板,该模板可能将属性设置为值,但系统已更改状态,并且我希望它是未定义的
我应该在
obj之后放置什么。[我在这里放置的内容]
首先设置为porp1,然后设置为prop2。我假设您想将“模板”对象ret
的成员添加到obj
,如果它们不存在,porp
就是一个打字错误
您说如果它们不存在,您希望将其显式设置为未定义,但是没有必要,因为对象的不存在成员已经未定义:
var x = new Object();
alert (typeof x.wibble === 'undefined') //true
您的ret.porp1='undefined'
将文本内容为'undefined'
的字符串对象分配给成员,这与“undefined”状态无关,如果这是您的意图:
var tricky = function(obj) {
var ret = {
prop1: 'undefined',
prop2: 'undefined'
}
for (requiredMember in ret) {
if (obj.hasOwnProperty(requiredMember) === false) {
obj[requiredMember] = ret[requiredMember];
}
}
return obj;
}
var o = {prop1:'ok_prop'};
o = tricky(o);
console.dir(o);
Object
prop1: "ok_prop"
prop2: "undefined"
可能无论你想问什么,都是因为<代码>porp!=道具FYI。你回答了我的问题,尽管我还有一个问题。我会接受的,因为这是一个问题,但未定义的事情更复杂。