2016-12-21 2 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 메서드는 함수 정의가 포함 된 속성입니다. [src] (http://www.w3schools.com/js/js_object_methods.asp) –

+0

자바에서는 메서드와 함수가 거의 동일합니다. 앞에서 설명한 것처럼 메서드는 개체에 연결된 속성으로 함수로 설명됩니다. 유일한 차이점은 형식이나 변수에 메서드를 연결하고 함수를 독립적으로 사용할 수 있다는 것입니다. – mike510a

+1

사실, 모든 함수는 메서드라고 가정합니다. –

답변

2

방법 단순히 function참조object특성에 저장됩니다. 자바 스크립트에서 메소드는 단지 개념 일 뿐이며 실제로는 기존 구문 부분이 아닙니다. 또한 자바 스크립트에는 method 키워드가 없습니다. object.propertyobject[propertyName]propertyName은 호텔의 이름을 포함하는 string입니다 :

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". 

하면 해당 객체의 속성에 액세스 할 수 없습니다하시기 바랍니다 당신은 두 가지 방법이있다.

그래서

bar.baz() 

정확히 동일한 달성 및 JavaScript 방법은 개체에 대해 수행 될 수있는 작업이다

bar["baz"](). 
+0

질문에서했던 것처럼'.'을 사용합니까?이 특정 함수가 실제로 메서드임을 보장합니까? –

+0

Javascript는이 영역에서 매우 유동적입니다 ... 'var f = o.f;','f.call (o)'... – deceze

+0

왜 신경을 썼겠습니까? 구문 적으로 JS에서는 함수와 메소드간에 차이가 없습니다. – connexo

관련 문제