2013-02-14 3 views
1

함수 안에 프로토 타입을 설정할 수없는 이유는 무엇입니까? 예를 들어 왜 이것이 작동하지 않습니까?함수 안에 JavaScript 프로토 타입을 설정할 수없는 이유는 무엇입니까?

var Bar = function(){ 
    this.name='Bar' 
} 

var barProto = new Bar() 

var Foo = function(){ 

} 

Foo.prototype= barProto 

var foo = new Foo() 

console.log(foo.name) // Bar 

내가 기능을 생성 한 후 프로토 타입을 지정하는 구문을 좋아하지 않는다 :

var Bar = function(){ 
    this.name='Bar' 
} 

var barProto = new Bar() 

var Foo = function(){ 
    this.prototype= barProto 
} 

var foo = new Foo() 
console.log(foo.name) // undefined 

는하지만이 작업을 수행합니다.

답변

2

this.prototypeFoo.prototype과 같지 않습니다. Foonew과 함께 호출되면 this에 대한 참조는 생성되는 인스턴스를 나타냅니다.

+0

나는 당신이 말하는 것을 얻을 셈 이죠. 하지만 프로토 타입 barProto를 갖기 위해 만든 새 객체를 원하지 않습니까? 프로토 타입은 "new"가 사용될 때만 설정됩니까? 왜 어떤 객체의 프로토 타입 속성을 언제든지 설정할 수 있습니까? – Eddie

+0

내가 말하는 것은 정확히 ben336과 동일합니다. "왜 어떤 객체의 프로토 타입 속성을 언제든지 설정할 수 없습니까?" 그게 언어가 작동하는 방식입니다. 아마도 당신은'var foo = Object.create (barProto)'를 선호할까요? 그것도 작동하며'Foo' 생성자 나'new' 키워드를 필요로하지 않습니다. – bfavaretto

5
this.prototype= barProto 

새로운 푸 의해 생성 될 특정 오브젝트를 참조

Foo.prototype= barProto 

this 일치하지 않는()

푸 생성자 함수이다. 특정 인스턴스가 아닌 생성자에서 프로토 타입을 설정합니다. 여기에 프로토 타입 상속에

더 많은 정보는 : Mozilla docs

관련 문제