设置对象属性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。你回答了我的问题,尽管我还有一个问题。我会接受的,因为这是一个问题,但未定义的事情更复杂。