2016-03-24 3 views
2

Я хочу установить значение свойства «текст» в свойство «значение».Свойства доступа к JavaScript от объекта

example.html:

<script> 
    var obj = { 
     text: "Hello", 
     value: this.text 
     /* 
     value: function() { 
      return this.text; 
     } 
     */ 
    }; 

    console.log(obj.text); // Output: Hello 
    console.log(obj.value); // Output: undefined 

    // console.log(obj.value()); // Output: Hello 
</script> 

Почему?

+0

почему вы хотите достичь этого? – messerbill

ответ

0

bcoz this относится к глобальному объекту в вашем коде. this имеющийся внутри функции в противном случае он будет ссылаться на глобальный объект (текущий контекст выполнения)

var obj = { 
     text: "Hello", 
     value: this 
    }; 

    console.log(obj.text); // Hello 
    console.log(obj.value); // window 

, но в этом случае

var obj = { 
     text: "Hello", 
     value: function() { 
      return this.text; 
     } 
    }; 

    console.log(obj.text); // Hello 
    console.log(obj.value()); //Hello 

Теперь this стоимости() относится к объекту

+0

Я думаю, что это все еще не определено – messerbill

+0

во второй части 'this' будет ссылаться на' obj' https://jsfiddle.net/cLd7eft4/1/ – Ramanlfc

+0

ваше право, но это разница, если он хочет 'значение' чтобы быть строкой, равной «text», или если это funtion, возвращающее это значение – messerbill

0

ключевое слово this в javascript означает контекст, который называется текущим действием. так что если вы хотите достичь вашей проблемы выполните следующие действия:

var obj = { 
    text: "Hello" 
    }; 

    obj.value = obj.text; 

https://jsfiddle.net/2zzdnmeb/

в вашем случае this бы на window объект - но все-таки: почему вы хотите это сделать? вы уже имеете свою ценность

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