2011-03-24 7 views
0

나는 아래 다음과 같은 두 개의 생성자를 작성하는 경우에 :생성자의 질문 자바 스크립트

Person(name, age) { 
    this.name = name; 
    this.age = age; 
    sayName = function() { 
     alert("hello"); 
    }; 
} 

Person(name, age) { 
    this.name = name; 
    this.age = age; 
    this.sayName = function() { 
     alert("hello"); 
    }; 
} 

의 차이점은 무엇입니까?

정말 첫 번째 코드에서 뭔가를 의미 sayName

합니까? 유용할까요?

+0

을 의미하는 것을 요약 작업에 대한 정보를 포함하시기 바랍니다. 그것은 사람들이 당신을 도울뿐만 아니라 코드를 올바르게 귀착시키는 데 도움이됩니다. 이 예제는 웹 개발자 용 Professional JavaScript, Second Edition * (Nicholas C. Zakas (Wrox, 2009), 152 페이지)에 있습니다. – Dori

답변

-1

sayName 개인용 글로벌 기능이며 두 번째는 권한있는 공개 기능입니다.


업데이트 # 1 :

다음 코드는 꽤 많이 당신이 책에 대한 질문을 할 때 그들이

function Person(name, age) { 
    this.name = name; 
    this.age = age; 
    sayName = function() { //define in global name-space 
    alert("hello"); 
    } 

    var sayNamePvt = function() { //private function 
     alert("hello pvt"); 
    } 

    this.callPvt = function(){ //shows how privilege function can access private vars and functions 
     sayNamePvt(); 
    } 
} 


function Person1(name, age) { 
    this.name = name; 
    this.age = age; 
    this.sayName = function() { //privilege public function 
     alert("hello1"); 
    } 
} 


var one = new Person('abc', 12); 
var two = new Person1('abcd', 11); 
two.sayName();//privileged public access 
sayName(); //global access 
//one.sayName(); //ERROR: one.sayName is not a function 
//one.sayNamePvt(); //ERROR: one.sayNamePvt is not a function 
one.callPvt(); //privileged method can call private functions 
+2

사실 'var' 키워드가 없으므로 전역 함수입니다. – qwertymk

+0

@qwertymk woops. 벌금을 놓쳤다. – Nishant

+0

@jsnewman이 (가) 엉망인 답에 대한 답변을 사과했다. – Nishant