2016-06-01 2 views
-2
const proto = { 
    hello() { 
    return `Hello, my name is ${ this.name }`; 
    } 
}; 
const greeter = (name) => Object.assign(Object.create(proto), { name }); 
const george = greeter('george'); 
const msg = george.hello(); 
console.log(msg); 

내가 위의 유형의 상속을 발견했을 때 JavaScript Scene을 읽었습니다. 나는 JS에 처음 온 사람이다.이 상속은 어떻게 작동합니까?

그래서 proto은 프로토 타입을 만들 개체입니다.

Que 1 : proto이 개체 인 경우 키와 연결하지 않고 자체 내에서 어떻게 기능을합니까? 그것은 것과 관련 { "hello" : function(){...} }

,
가야 2 안 : 지방 화살표 기능 키 - 값 쌍으로 객체에 저장 수를 ??

큐 3. Object.assign은 어떻게 작동합니까?
MDN을 읽은 후, 두 번째 인수의 모든 내용이 target에 복사됩니다. 우리의 경우에는 프로토 타입입니다. 옳은?

+0

** 1 & 2 ** ** =>이 코드 스 니펫은 ES2016에 속하며이 JS 버전은 유효한 JavaScript입니다. –

+0

@AshishKumar 그것이 유효한 JS라는 것을 알고 있습니다. 나는 단지 그것이 작동하는 방법에 대해 내 머리를 싸려고 노력하고있다. –

+0

당신은 그 부분을 놓쳤습니다 ** ES2016 ** ... :) –

답변

1

Que 1 : proto가 객체 인 경우 키와 연결하지 않고 자체 내에 어떻게 함수가 있습니까? { "hello": function() {...}}

이는 개체에 메서드를 정의하는 ESS 구문이 enw 때문입니다. 구문에 대한 자세한 내용은이를 참조하십시오 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Method_definitions

가야 2 : 지방 화살표 기능 키 - 값 쌍으로 객체에 저장 할 수 있습니까?

예. 당신은 아래처럼 수행 할 수 있습니다

let obj = { 
    func:() => { 
    console.log(`Hello world!`); 
    } 
} 

obj.func(); 

가야 3. 어떻게 Object.assign 작동합니까? 워드 프로세서

다음 Object.assign() 메소드는 대상체에 하나 이상의 소스 개체로부터 모든 열거 자기 특성의 값을 복사하는 데 사용되는

. 대상 객체를 반환합니다. 귀하의 경우에는

Object.assign(target, ...sources)

실제로 프로토 타입하지만 그 proto에 prototypally 링크 된 객체입니다. 따라서 greetername이고, hello() 메소드는 프로토 타입 체인에서 가져온 것입니다.

+0

'Que 1을 묻는 내 이유는 이것입니다. 저는 함수가 변수에 저장 될 수 있다는 것을 압니다. 코드 스 니펫이 쓰여지는 방식에서'class' 키워드를 건너 뛰어 변수에 ES6 클래스를 저장할 수 있는지 혼란스러워했습니다. 그럴 수도 있나? –

+0

'Que 1'의'hello() {}'구문은'{ "hello": function() {...}}'의 간결한 버전입니다. http://www.2ality.com/2014/12/es6-oop.html –

+0

@LittleChild : 아니요. 그러나 'var foo = class {};'와 같은 클래스 표현식을 사용할 수 있습니다 (함수 표현식). –

관련 문제