2016-12-21 7 views
0

Я всегда был в замешательстве между этими двумя. Из того, что я понимаю, методы всегда использовать точечную нотацию, как:Как отличить метод от функции?

$("li.third-item").nextAll().addBack().css("background-color", "red"); 

В этом случае nextAll(), addBack() и .css() все методы.

Аналогично, функции вызываются непосредственно. Нравится,

make_tea(); 

Я хочу знать с уверенностью, что-то является функцией или методом, глядя на то, как она используется. Использует ли PersonOne.run_now() всегда гарантию, что run_now() - это метод? Может ли run_now() быть функцией, если мы используем . для доступа к ней?

Мой вопрос: «Используется ли функция, когда мы используем .

+1

методы JavaScript являются действия, которые могут быть выполнены на объектах. Метод JavaScript - это свойство, содержащее определение функции. [src] (http://www.w3schools.com/js/js_object_methods.asp) –

+0

В Javascript методы и функции почти идентичны - как указано выше: методы - это просто свойства, привязанные к объектам, которые описываются как функция (единственная разница заключается в том, что вы присоединяете методы к типам или к переменным, а функции могут стоять в одиночестве) – mike510a

+1

На самом деле все функции являются методами, потому что они являются частью объекта окна, я думаю, –

ответ

2

Методы являются просто functionссылки хранятся в objectсобственности. Метод в Javascript - это просто концепция, а не существующая синтаксическая часть. Кроме того, в Javascript нет ключевого слова method.

function foo() { /* whatever */ } 

var bar = {}; 
bar.baz = foo; 

// You'd consider this a function call 
foo(); 

// While the following is actually syntactically also a function call 
// you might consider baz a "method of the bar object" 
bar.baz(); 
// and thus bar.baz() would then be a "method call". 

Пожалуйста, не то, что для доступа к свойству объекта у вас есть два возможных пути: object.property и object[propertyName] где propertyName является string, содержащий имя свойства.

Так

bar.baz() 

достигает точно такой же, как и идентичен

bar["baz"](). 
+0

Использует ли '.', как я сделал в вопросе, гарантирует, что эта конкретная функция на самом деле является методом? –

+0

Обратите внимание, что Javascript чрезвычайно полезна в этой области ... 'var f = o.f;', 'f.call (o)' ... – deceze

+0

Зачем вам все равно? Синтаксически в JS нет никакой разницы между функцией и методом. – connexo

Смежные вопросы