设置对象属性javascript

时间:2013-04-18 13:13:19

标签: 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({prop1:'ok_prop'});

 ===>>{prop1:'ok_prop',prop2:'undefined'}

我没有用语言表达问题,因为我觉得很难正确定义。我的问题是你可以看到的:我有一个对象,有时我在该对象中设置一些属性有时不这样做。我想要一个函数,它将检查我的对象是否具有一系列属性,如果没有,则将其明确设置为undefined。如果我隐式未定义它,它不起作用,因为我用它将它发送到一个jade模板,该模板可能有一个属性设置为值,但系统已更改状态,我希望它是未定义的。

obj.[what I put here]首先设置为porp1然后设置为prop2后,我应该放置什么。

1 个答案:

答案 0 :(得分:0)

我假设你想要将“模板”对象ret的成员添加到obj,如果它们不存在& porp是一个错字。

你说如果它们不存在你想明确地将它设置为未定义,但是没有必要,因为对象的不存在的成员已经是未定义的:

 var x = new Object(); 
 alert (typeof x.wibble === 'undefined') //true

您的ret.porp1 = '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"