function Entity() {
this.a = {a: 4};
this.b = 5;
}
function Thing() {}
Thing.prototype = new Entity;
var thing1 = new Thing;
thing1.a.a = 3;
thing1.b = 4;
var thing2 = new Thing;
console.log(thing2.a.a); // prints 3 instead of 4. I would like 4.
console.log(thing2.b) // prints 5 as wanted
자바 스크립트에서 프로토 타입 상속을 설정하는 데 어려움이 있습니다. 이상적으로 나는 thing1과 thing2가 모두 "새로운 엔티티 프로토 타입"의 깨끗한 복사본을 가지길 원합니다.어떻게 체인 된 자바 스크립트 프로토 타입 상속을 사용합니까?
사용 this.__proto__
내가 피하고 싶은 무언가이다
[편집]
내가 어떻게 작업의 대략적인 생각을 가지고있다.
설정 thing1.b는 Thing 인스턴스의 b 속성을 설정합니다. 프로토 타입 체인에 정의 된 Entity.b를 만지지 않습니다.
여기서 "설정되지 않은 상태로 설정할 수 없습니다"라는 오류가 발생하여 인스턴스 인스턴스의 thing1.a.a를 설정할 수 없습니다. 이것은 정의 된 Entity.a를 찾기 위해 프로토 타입 체인을 올라가 Entity.a.a를 새로운 값으로 설정할 때입니다.
[또한 편집] @IvoWetzel으로
속성을 설정하면하지 않기 때문에 프로토 타입 체인에 닿지 않도록 thing1.b을 설정했다. 어디로 설정 thing1.a.a 두 단계를 수행합니다. .A
덜 혼동스러운 변수 이름을 사용할 수 있습니까? 아마도 멤버 변수와 전역 변수 모두에 대해 a와 b를 재사용하지 마십시오. foo, bar, baz 또는 다른 것을 시도해보십시오. –
나는 약간 더 현명한 것을 사용했다. 아마 현명하다. – Raynos