자바 스크립트에서 모든 객체는 프로토 타입을 가지고 있습니다. 모든 프로토 타입은 객체이므로 모든 프로토 타입에는 프로토 타입이 있습니다.자바 스크립트 : 프로토 타입 체인 설정
var Person = function (name) {
this.name = name;
}
Person.prototype = {
walk: function() {
alert(this.name + ' is walking');
}
}
var walter = new Person('Walter');
내가 걸을 수 :
이
날입니다 사람들이 날 수 있는지 궁금walter.walk() // => "Walter is walking"
?
Person.prototype = {
walk: function() {
alert(this.name + ' is walking');
}
}
Person.prototype.prototype = new WingedAnimal();
var walter = new Person('Walter');
walter.walk() // => 'Walter is walking'
walter.fly();
형식 오류 : 다음
확인하는 기능이 아닌) walter.fly (:
var WingedAnimal = function() {
this.hasWings = true;
}
WingedAnimal.prototype = {
fly: function() {
alert(this.name + ' is flying')
}
}
var Person = function (name) {
this.name = name;
}
Person.prototype = {
walk: function() {
alert(this.name + ' is walking');
},
prototype: new WingedAnimal()
}
var walter = new Person('Walter');
walter.walk() // => 'Walter is walking'
walter.fly();
형식 오류를 : 프로그래머는, 난 그냥 비행 사람들이 수 할 것 신들 : walter.fly()는 함수가 아닙니다.
정말 이렇게 할 방법이 없습니까? 제 말은, 여러 객체를 하나의 프로토 타입으로 혼합하는 대신 프로토 타입 체인을 사용하는 것입니까?
나는 내 질문에 명확히하기 위해 ...하지만 여전히 함께
물건을 혼합 싫어하지 않는 것이 : 나는 이미 나는 보통 를 호출하는 기능과 함께이 문제를 해결 한 순간
을을 혼합하고 일반적으로 CORE이라는 네임 스페이스에 넣습니다. 이 함수는 전달 된 모든 객체의 멤버를 첫 번째 객체에 복사합니다. 내 코드는 일반적으로 다음과 같습니다 SomeInterface에서
var Constructor = function() {
// stuff
}
CORE.mix(Constructor.prototype, SomeInterface, AnotherInterface, {
//stuff that goes only into objects made with Constructor
});
모든 것이, AnotherInterface 및 문자 개체가 Constructor.prototype로 끝나는, 우선 오른쪽으로 왼쪽으로. 그러나 이것은 Javascript가 어떻게 동작해야한다고 생각하지 않습니다. 제 생각에 프로토 타입 체인이 있어야합니다. 프로토 타입 하나에 여러 가지 물건이 섞여있는 것은 아닙니다.
someObject.method를 호출하면 메서드을 someObject로 검색해야합니다. 존재하지 않으면 someObject.prototype으로 검색해야합니다. 다음 someObject.prototype.prototype; 프로토 타입이 정의되지 않은 프로토 타입을 가질 때까지 계속 실패합니다. 이것이 내가 this great explanation에서 이해하는 방법입니다. 내가 잘못? 각 객체의 프로토 타입은 실제로 사용할 수 있습니까?
그 덕분에 몇 가지 점이 분명해졌습니다. 같은 프로토 타입에 모든 것을 혼합하는 것이 더 나은 방법이라고 생각하십니까? –
글쎄, 뭐든간에. 당신은 대답했습니다. 나는 나머지를 나 자신으로 분류 할 것입니다. –
WingedAnimal과 Person을위한 하나의 프로토 타입입니까? 나는 이것이 단지 예시 일 뿐이며 실제 사례는 그 자체의 장점으로 판단되어야 할 것이라고 기대하고있다. 개인적으로는 Java 스타일의 깊은 상속을 위해 상대적으로 얕은 프로토 타입 트리를 선호하지만 Person을 WingedAnimal로 만들지는 모른다. (!) – bobince