2016-06-28 3 views
1

나는 객체 A를 생성하고 싶습니다, 그래서 같이 쓰기 :"A.fn.A.init {}"의 의미는 무엇입니까?

A = function() { 
} 
A.prototype = { 
    init: function() { 
     console.log(this); 
    } 
} 

new A.prototype.init()의 결과는 A.init {}입니다.
나는이 같은 A.prototype의 별칭을 만들 때 :

A = function() { 
} 
A.as = A.prototype = { 
    init: function() { 
     console.log(this); 
    } 
} 

결과는 A.as.A.init {} 대신 A.init {}으로 밝혀졌다.
왜? this은 어떻게 작동합니까?

+0

예상되는 결과는 무엇입니까? – guest271314

+0

"* 새로운 A.prototype.init()의 결과 *"하지 마라. 원하는 경우'new A' 인스턴스를 만들고'init' 메소드를 드롭하십시오. – Bergi

답변

1

"A.fn.A.init {}"은 (는) 자바 스크립트에서 무엇을 의미합니까?

실제로 아무 의미도 없습니다. 콘솔 API 나 생성 된 출력 모두 표준화되어 있지 않습니다. 브라우저는 객체의 "이름"또는 "클래스"를 결정하기 위해 구현에 대한 특정 경험적 ​​방법을 적용합니다 (그들은 constructor 속성을보고 있지만 분명히 그 이상을 수행하고 있습니다).

두 경우 모두 this은 콘솔에서 어떤 이름을 표시할지에 관계없이 A.prototype.init.prototype에서 상속받은 새 개체를 나타냅니다.