다음 코드는 'undefined'를 경고합니다. 처음 세 줄을 바꾸지 않고 '2'로 경고 할 수 있습니까?이미 생성 된 객체에 프로토 타입을 할당하는 방법은 무엇입니까?
var b = function(){}
b.prototype.c = 2
var a = {}
a.constructor = b
alert(a.c)
바이올린 : http://jsfiddle.net/FHLgR/4/
다음 코드는 'undefined'를 경고합니다. 처음 세 줄을 바꾸지 않고 '2'로 경고 할 수 있습니까?이미 생성 된 객체에 프로토 타입을 할당하는 방법은 무엇입니까?
var b = function(){}
b.prototype.c = 2
var a = {}
a.constructor = b
alert(a.c)
바이올린 : http://jsfiddle.net/FHLgR/4/
,하지만 난 그게 표준이 아닌, 따라서 모든 브라우저에서 지원되지 않는 것 같아요 :
a.__proto__ = b.prototype;
네가 그렇게하지 않는 한 나는이 일을하지 않는 것이 좋습니다. 그건 네가해서는 안된다고했다. 그것은 모든 브라우저에서 지원되지 않습니다 => http://stackoverflow.com/a/3082878/243568. __proto__에 대한 문서는 여기에서 볼 수 있습니다.> https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/proto. –
@RobertHurst 나는 그것이 좋은 생각이라고 말하는 것이 아니라 그가하려고하는 것을 이루기위한 유일한 방법을 알고있다. 그러나 물론 당신의 권리. – basilikum
답변에 동의합니다. 나는 그것에 대해 비판적이지 않다. 사실 나는 똑같은 대답을 올리려고했다. 나는 이것이 얼마나 나쁜지를 지적하고 싶었다. –
내부'[[프로토 타입]] '로 설립된다 객체가 생성 될 때 액세스 할 수없는 속성 public 생성자 프로퍼티는 임의의 값으로 설정 될 수있는 편리함이며 ([Prototype]] 값에는 아무런 영향을주지 않습니다. 그러나, '__prototype__' 속성은 ECMAScript의 차기 버전에서 소개 될 수 있습니다 (basilikum의 답변 참조). – RobG