Функция. ее имя и (). Когда ставить? Когда не ставить?
Еще пример из того же раздела http://beta.javascript.ru/tutorial/this
var user = { firstName: "Вася" }; function func() { alert( this.firstName ); } user.sayHi = func; (); // this = user Не понимаю вот что. Вот создается новое свойство user.sayHi. Свойству присваивается функция func. Почему тогда пишется user.sayHi = func, а не user.sayHi = func() ? Ведь выше в коде она определяется как function func(), со скобками т.е., а при sayHi уже без скобок. И почему для вызова свойства нужны скобки? user.sayHi(), а не user.sayHi. То есть свойство объекта становится функцией? Или наследует свойства функции? Или просто в таком случае к нему обращаться нужно как к функции, хотя это всего лишь свойство? |
Цитата:
// Свойство стало методом user.sayHi = func ... // Свойству присвоили значение, которое вернула функция user.sayHi = func() Цитата:
|
jsuse, вы слишком мудрите. В js объекты передаются по ссылке.
func - ссылка на функцию. func() - запуск исполнения функции(возвращает результат) Если совсем упростить: в данном случае свойство sayHi просто становится ссылкой на ту же функцию, что и func. И соответственно данная функия может быть запущена как user.sayHi() и будет выполняться в контексте user . В скобки как обычно передаются параметры(если что). var firstName="Даздраперма"; var user = { firstName: "Вася" }; function func() { return this.firstName; } user.sayHi = func; alert([ 'func: '+ func, 'func(): '+func(), 'user.sayHi(): '+user.sayHi() ].join('\n\n')) |
Часовой пояс GMT +3, время: 04:01. |