我不确定这是可能的,但你们可以这么说:
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后,我应该放置什么。
答案 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"