2016-07-12 3 views
1

범위를 벗어난 프로토 타입을 만들었지 만이를 참조하면 기본 속성에 도달 할 수 없습니다.속성이 반환되지 않음

'use strict'; 

function Cachorro(nome) { 
    this.nome = nome; 

    this.late =() => { 
     console.log(`${this.nome}: Au au au!`); 
    } 
}; 

Cachorro.prototype.morde =() => { 
    console.log(`${this.nome}: #mordendo`); 
} 

const dolly = new Cachorro("Dolly"); 


dolly.late() 
dolly.morde() 
+1

. 화살표 기능을 사용하지 마십시오. – Quentin

+0

관련 항목 : [화살표 함수 대 함수 선언/표현식 : 해당하는/교환 가능합니까?] (http://stackoverflow.com/q/34361379/218196) –

답변

3

이유는 ES6 화살표 기능은 항상 부모 범위의 this 상속한다는 것입니다. 따라서 this이 해당 객체 인스턴스의 속성에서 얻을 수있는 유일한 방법이기 때문에 프로토 타입 함수에이 객체를 사용하고 싶지는 않습니다.

그래서이 변환 :

Cachorro.prototype.morde =() => { 
    console.log(`${this.nome}: #mordendo`); 
} 

에 : 화살표 기능을 사용하는 점이다

Cachorro.prototype.morde = function() { 
    console.log(`${this.nome}: #mordendo`); 
} 
관련 문제