Является ли функция JavaScript «функцией» или «объектом» или и тем, и другим? - PullRequest
4 голосов
/ 15 октября 2010

Я пытаюсь понять, как работает функция Javascript. Это функция или объект или оба?

Ответы [ 4 ]

7 голосов
/ 15 октября 2010

Функции в javascript являются первоклассными объектами.Таким образом, они являются и функциями, и объектами.

Поскольку они являются объектами первого класса, вы можете присвоить переменной функцию и присвоить ей свойства, например:

var addName=function(){}; 
addName.blah = 1;

Если ониt Первоклассные объекты, вы будете ограничены этим синтаксисом, но вы можете сделать это обоими способами:

function addName(){}
4 голосов
/ 15 октября 2010

Это оба.

Все - это «данные» в Javascript, включая функции. Я считаю, что это хороший способ изобразить это:

var f = function() { alert('foo'); };

Это присваивание переменной, которая ничем не отличается от написанной, скажем:

var f = new String('foo');

В любом случае, вы можете написать операторы типа f.bar = 'baz'; для назначения свойств вашему объекту. Единственное отличие состоит в том, что оператор () (если хотите) работает только в том случае, если ваша переменная является функцией. f() имеет смысл, если это функция; f() не имеет смысла, если это строка или какой-то другой фрагмент данных.

2 голосов
/ 15 октября 2010

В JavaScript все функции являются объектами.

Функции - это объекты, которые можно вызывать.(У них есть внутреннее свойство [[Call]])

0 голосов
/ 15 октября 2010

Ну, я не собираюсь говорить, что «функции JavaScript - это объекты первого класса», поскольку все это уже говорили, но если вы хотите больше узнать о функциях, взгляните на эту короткую страницу:

http://jqfundamentals.com/book/ch02s09.html

Кстати, если вы планируете изучать JavaScript и JQuery, это бесплатная онлайн-книга для вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...