Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 04.11.2011, 17:07
Аспирант
Отправить личное сообщение для jsuse Посмотреть профиль Найти все сообщения от jsuse
 
Регистрация: 10.04.2010
Сообщений: 92

Свойства объекта, методы и this. Почему свойство вызывается с () ?
Вопрос по этой статье http://beta.javascript.ru/tutorial/this

Самый первый пример.

var user = {
firstName: "Вася",

sayHi: function() {
alert( this.firstName ); // при вызове user.sayHi() будет this = user
}
}

Объясните, почему одно из свойств объекта нужно вызывать так: user.sayHi() ? Почему не user.sayHi ? (без скобок, то есть). Это же свойство, а не функция. Зачем к свойству скобки? То есть, следуя такой логике, нужно и firstName вызывать со скобками, т.е. user.firstName()

То есть, я не понимаю, почему свойство нужно вызывать со скобками? Или правило такое, что если свойству объекта присвоена функция, то свойство само становится функцией? Тогда, по логике, свойству и значение передавать можно, типа так: user.sayHi(«Вася»); Объясните, что к чему, плз.
Ответить с цитированием
  #2 (permalink)  
Старый 04.11.2011, 19:01
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,202

Сообщение от jsuse
я не понимаю, почему свойство нужно вызывать со скобками?
Это не свойство... Это метод.

var user = {
	firstName: "Вася",
	sayHi: function() { 
		alert('Привет, '+this.firstName);
	}
};
// Показать значение свойства
alert(user.firstName);
// Вызвать метод
user.sayHi();
Ответить с цитированием
  #3 (permalink)  
Старый 04.11.2011, 20:39
Аватар для B@rmaley.e><e
⊞ Развернуть
Отправить личное сообщение для B@rmaley.e><e Посмотреть профиль Найти все сообщения от B@rmaley.e><e
 
Регистрация: 11.01.2010
Сообщений: 1,810

Сообщение от jsuse
Это же свойство, а не функция. Зачем к свойству скобки?
Никто не мешает Вам работать с ним как со свойством.
var user = {
 firstName: "Вася",

 sayHi: function() { 
 alert( this.firstName ); // при вызове user.sayHi() будет this = user
 }
 }

alert([user.sayHi, user.sayHi.length])
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
IE 8 Не удалось получить значение свойства "match": значением объекта является null abstract Internet Explorer 2 26.08.2011 15:27
Не работают методы и свойства MixedCollection Tie ExtJS 3 23.12.2010 13:31
Как при чтении или записи свойства объекта вызывать функцию danik.js Общие вопросы Javascript 3 16.09.2010 17:57
Как различить методы и свойства? возжаждавший Элементы интерфейса 59 12.04.2010 08:33
Объект как свойство объекта Cooskon Общие вопросы Javascript 6 16.02.2010 21:41