Подтвердить что ты не робот

Разница между var и этим в функциях Javascript?

var tools = {};

tools.triangle = function() {
    var originX = 0;
    var originY = 0;
}

 

var tools = {};

tools.triangle = function() {
    this.originX = 0;
    this.originY = 0;
}

Существуют ли различия между этими двумя блоками кода? Извините, если это было задано раньше.

4b9b3361

Ответ 1

var создает локальную переменную в tools.triangle. Переменные originX и originY не могут взаимодействовать вне tools.triangle. this - это указатель на текущий объект, с которым вы имеете дело. Второй пример можно использовать для задания свойств объекта, выполнив new tools.triangle();. Если вы не используете new и просто используйте tools.triangle();, this укажет глобальный объект, который является объектом window. Вы можете изменить объект, на который this указывает, используя методы функции call(); и apply();:

var myObj = {};

tools.triangle.call( myObj );

// "this" in tools.triangle now points to myObj
// myObj now has the properties originX and originY

Важно знать, что this может ссылаться на любой объект, а также undefined или null в строгом режиме ES5.

Вы можете найти дополнительную информацию здесь.

Ответ 2

В первом примере X и Y существуют как локальные переменные для замыкания, сохраненного в переменной triangle.

Во втором примере X и Y существуют как переменные для объекта tools.triangle из-за использования this.