【问题标题】:Set object property javascript设置对象属性 javascript
【发布时间】:2013-04-11 15:04:20
【问题描述】:

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

 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] 之后放置什么,首先设置为 prp1,然后设置为 prop2。

【问题讨论】:

  • 可能无论您想问什么,因为; porp != prop

标签: javascript arrays properties


【解决方案1】:

我假设您想将“模板”对象 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"

【讨论】:

  • 仅供参考undefined。你给了我问题的答案,尽管我仍然有问题。我会接受它,因为它是问题,但未定义的事情更复杂。
猜你喜欢
  • 2015-03-14
  • 2018-12-02
  • 2019-07-20
  • 2018-06-05
  • 2019-03-24
  • 2014-11-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多