Почему мы использовали ключевое слово "this" в этом фрагменте? - PullRequest
0 голосов
/ 03 ноября 2011
    var someObject = {
someArray : new Array(),

someInt : 0,

Total: function(){

this.someInt = 0;//we used "this" keyword here, why?Cant we just say "someInt = 0"?

for(var i=0;i<this.someArray.length;i++){//and here..

var c = this.someArray[i];//again we use "this"

this.someInt += c.value;//also here
}

так почему мы использовали ключевое слово "this"? мы не можем просто ввести имя переменной?

Ответы [ 7 ]

5 голосов
/ 03 ноября 2011

Ключевое слово this относится к объекту, от имени которого производится вызов, т.е. если вы вызываете функцию следующим образом:

someObject.Total()

, тогда this будет ссылаться на someObject внутри функции. Благодаря ключевому слову this функция может изменять someInt и читать из someArray, которые являются членами someObject. Если вы удалили this из тела функции, все эти ссылки будут относиться к глобальным переменным или переменным, локальным для тела функции.

3 голосов
/ 03 ноября 2011

Нет, оператор someInt = 0 не будет изменять свойство someInt из someObject. Вместо этого он изменил бы свойство с именем someInt в глобальном объекте / объекте по умолчанию (window в браузере), что явно нежелательно.

Обратите внимание, что (в зависимости от того, как вы собираетесь вызывать функцию Total), вы также можете написать это как someObject.someInt. Однако при вызове функции так:

someObject.Total()

... значение this в функции равно someObject.

1 голос
/ 03 ноября 2011

Нет, поскольку переменная не создана полностью. Используя ключевое слово this, вы можете получить доступ к переменной из себя.

0 голосов
/ 03 ноября 2011

Понять this ключевое слово в деталях ЗДЕСЬ

0 голосов
/ 03 ноября 2011

someInt определяется как свойство someObject. Это должно быть определено как переменная для доступа к нему таким образом.

http://jsfiddle.net/Z7mSK/

0 голосов
/ 03 ноября 2011

На самом деле Дуглас Крокфорд в своей статье Javascript The Good Parts предлагает не использовать это ключевое слово в коде, поскольку функции из объекта могут применяться к другим объектам, что может привести к ошибкам.так что иногда лучше использовать только имена переменных.

0 голосов
/ 03 ноября 2011

Похоже, это просто для ясности. Всегда использование this., вероятно, является хорошей практикой, когда вы не используете специальные соглашения об именах для переменных экземпляра по сравнению с локальными переменными (также и в других языках, а не только в javascript).

Несмотря на то, что в этом случае это может не потребоваться, если у вас была более крупная функция с большим количеством локальных переменных и переменных экземпляра, это делает вещи намного понятнее, когда вы различаете.

...