2015-01-15 3 views
-1

Я очень запутался, когда дело доходит до переменных объекта javascript. Если я создаю конструктор объекта, какая разница между его использованием. и используя var? EG:Объекты и переменные Javascript

var myObj = function(x){ 
    this.thing = x; 
    var otherThing = 20; 
    var lastThing = "I wish I knew more about javascript objects"; 
} 

Другое дело, когда установив это. переменную, которую вы называете ее внутри объекта, в приведенном выше случае:

this['thing']; 

Это правильно?

Заранее спасибо.

ответ

1

Вот ссылка на объектно-ориентированном JavaScript на MDN:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Introduction_to_Object-Oriented_JavaScript

Если вы используете УАК ключевое слово, то эти переменные будут закрытыми для вашего объекта. Вы не сможете сделать myObj.otherThing

Если вы используете это, то переменная является свойством вашего объекта, так что вы можете использовать myObj.thing

При вызове переменной внутри объекта вы должны использовать this.thing, за пределами объекта вы бы использовать myObj.thing

Надеюсь, что помогает.

+0

Блестящий. Это было просто разъяснение, которое я искал. Спасибо за ответ на мой вопрос noob :) –

0

Правильно. Будьте осторожны:

var fn = function(x){ 
    this[ 'thing' ] = x; 
    return this; 
} 

console.log(fn(2)); // return window, and function set window[ 'thing' ] = 2 
console.log(fn.apply(document, [ 3 ])); // return document, and function set window.document[ 'thing' ] = 3 

«this» ссылается на контекст, где выполняется функция. Если вы запускаете функцию в окне, например, fn(2), контекст - это окно. Используйте apply, чтобы изменить контекст. Затем, если вы хотите, чтобы thing находился в текущей функции, используйте var thing в контексте функции;

window[ 'thing' ] // is the same as window.thing 
window[ '2' ] // is the same as window[ 2 ], but not window.2 (syntax error) 
Смежные вопросы