2013-04-18 3 views
-3

Я не уверен, что это возможно, но вы, ребята, можете сказать:Установить свойство объекта Javascript

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.

+1

возможно, что бы вы ни пытались спросить, потому что; 'porp! = prop' –

ответ

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" 
+0

FYI [undefined] (http://scottdowne.wordpress.com/2010/11/28/javascript-typeof-undefined-vs-undefined/). Вы дали мне ответ на мой вопрос, хотя у меня все еще есть проблема. Я соглашусь с этим, поскольку речь идет о вопросе, но неопределенная вещь сложнее. – Pio

Смежные вопросы