2013-07-24 2 views
1

다음 코드는 'undefined'를 경고합니다. 처음 세 줄을 바꾸지 않고 '2'로 경고 할 수 있습니까?이미 생성 된 객체에 프로토 타입을 할당하는 방법은 무엇입니까?

var b = function(){} 
b.prototype.c = 2 
var a = {} 

a.constructor = b 
alert(a.c) 

바이올린 : http://jsfiddle.net/FHLgR/4/

+0

내부'[[프로토 타입]] '로 설립된다 객체가 생성 될 때 액세스 할 수없는 속성 public 생성자 프로퍼티는 임의의 값으로 설정 될 수있는 편리함이며 ([Prototype]] 값에는 아무런 영향을주지 않습니다. 그러나, '__prototype__' 속성은 ECMAScript의 차기 버전에서 소개 될 수 있습니다 (basilikum의 답변 참조). – RobG

답변

3
당신이 할 수있는

,하지만 난 그게 표준이 아닌, 따라서 모든 브라우저에서 지원되지 않는 것 같아요 :

a.__proto__ = b.prototype; 
+2

네가 그렇게하지 않는 한 나는이 일을하지 않는 것이 좋습니다. 그건 네가해서는 안된다고했다. 그것은 모든 브라우저에서 지원되지 않습니다 => http://stackoverflow.com/a/3082878/243568. __proto__에 대한 문서는 여기에서 볼 수 있습니다.> https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/proto. –

+1

@RobertHurst 나는 그것이 좋은 생각이라고 말하는 것이 아니라 그가하려고하는 것을 이루기위한 유일한 방법을 알고있다. 그러나 물론 당신의 권리. – basilikum

+0

답변에 동의합니다. 나는 그것에 대해 비판적이지 않다. 사실 나는 똑같은 대답을 올리려고했다. 나는 이것이 얼마나 나쁜지를 지적하고 싶었다. –