Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Свойства объекта, методы и this. Почему свойство вызывается с () ? (https://javascript.ru/forum/misc/22897-svojjstva-obekta-metody-i-pochemu-svojjstvo-vyzyvaetsya-s.html)

jsuse 04.11.2011 17:07

Свойства объекта, методы и 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(«Вася»); Объясните, что к чему, плз.

ksa 04.11.2011 19:01

Цитата:

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

Это не свойство... Это метод.

var user = {
	firstName: "Вася",
	sayHi: function() { 
		alert('Привет, '+this.firstName);
	}
};
// Показать значение свойства
alert(user.firstName);
// Вызвать метод
user.sayHi();

B@rmaley.e><e 04.11.2011 20:39

Цитата:

Сообщение от jsuse
Это же свойство, а не функция. Зачем к свойству скобки?

Никто не мешает Вам работать с ним как со свойством.
var user = {
 firstName: "Вася",

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

alert([user.sayHi, user.sayHi.length])


Часовой пояс GMT +3, время: 13:25.