-3

我不确定这是否可能,但你们可以这样说:

 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'}

我没有用语言提出问题,因为我发现很难正确定义。如您所见,我的问题是:我有一个对象,有时我在该对象中设置了一些属性,有时却没有。我想要一个函数来检查我的对象是否具有一系列属性,如果没有,则将其显式设置为未定义。如果我将其隐式保留为未定义,则它不起作用,因为我使用它将其发送到玉模板,该模板可能将属性设置为一个值,但系统已更改状态,我希望它是未定义的。

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

4

1 回答 1

0

我假设您想将“模板”对象的成员添加retobj它们不存在的情况下,这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"
于 2013-04-18T15:39:15.480 回答