0
function Car(model, color, power){ 
    this.model = model; 
    this.color = color; 
    this.power = power; 
    this.is_working = true; 
    this.sound = function(){ 
     console.log("Vrummm!"); 
    }; 
} 
function Car_optionals(){ 
    this.turbo_boost = true; 
    this.extra_horsepower = 20; 
    this.name_tag = "Badass"; 
} 

Car.prototype = new Car_optionals(); 
var Audi = {}; 
Audi.prototype = new Car(); 
console.log(Audi.is_working); 

그래서이 클래스에도 Car 및 Car_optionals 클래스가 있으며, 새롭게 작성된 객체 인 Audi가 Car 및 Car_optionals 클래스에서 소유권을 상속 받기를 원합니다. 객체 리터럴 내에서 소유권 및 메서드를 상속하는 것이 가능합니까?객체 리터럴 내 상속

답변

0

개체 리터럴 내에서 소유권 및 메서드를 상속하는 것이 가능합니까?

아직하지만 ES6로,이 가능할 것이다 : barfoo의 프로토 타입이된다

var foo = { 
    __proto__: bar 
}; 

.

그러나 특정 프로토 타입으로 개체를 만들 수 있는지 여부를 사용자가 생각한다고 생각합니다.

var foo = Object.create(bar); 

을 아니면 이미 존재하는 객체가있는 경우, 당신은 Object.setPrototypeOf 사용할 수 있습니다 : 당신은 그것을 위해 Object.create을 사용할 수 있지만 특정 경우

foo.setPrototypeOf(bar); 

을의 프로토 타입을 설정하는 값이 없습니다 및 Car_optionalsprototype 개체에 아무 것도 정의하지 않았기 때문에 무엇이든 Audi에 연결해야합니다. 모든 기능 자체 안에 설정, 그래서 당신은 단순히 Audi에 이러한 기능을 적용 할 수 있습니다

Car.call(Audi, 'A4', 'blue', 180); 
Car_optionals.call(Audi); 

그리고 더 자연적인 방법을 Car을 통해 새로운 인스턴스를 생성하는 것입니다 :

var Audi = new Car('A4', 'blue', 180); 
Car_optionals.call(Audi); 
+0

잘 전화를() 함수는 나를 위해 트릭을 할 것입니다. 그게 내가 찾고 있던거야. 고마워! –