상속은 실제로 유형의 확장입니다. 그러나 JavaScript는 프로토타입 상속을 채택하므로 아래 편집자는 JS 프로토타입 상속의 4단계에 대한 기사와 매우 좋은 참조 가치가 있는 프로토타입 상속 다이어그램의 개요를 여러분과 공유할 것입니다. 그것이 모두에게 도움이 되기를 바랍니다.
One: js 프로토타입 상속의 4단계
//js模拟类的创建以及继承 //动物(Animal),有头这个属性,eat方法 //名字这个属性 //猫有名字属性,继承Animal,抓老鼠方法 //第一步:创建父类 function Animal(name){ this.name = name; } //给父类添加属性方法 Animal.prototype.eat = function(){ console.log(this.name + " eating..."); } //第二步:创建子类 function Cat(name){ Animal.call(this,name); } //第三步:确定继承的关系 Cat.prototype = Object.create(Animal.prototype); //第四步:改造构造器 //改变了某个构造器的原型之后,紧接着的代码一定是改构造器 Cat.prototype.constructor = Cat; Cat.prototype.zhualaoshu = function(){ console.log(this.name + " 抓 老鼠"); } var mao = new Cat("猫"); mao.eat(); mao.zhualaoshu();
Two: 프로토타입 상속 다이어그램
아래 사진이 도움이 됩니다 이해하기
이해를 공고히 하는 연습,
Foo 함수의 __proto 값은 Foo.prototype과 같죠? | 아니요 |
Object의 프로토타입을 수정할 수 있나요? 가능한 이유는 무엇이며 불가능한 이유는 무엇입니까? | Function() |
최상위 프로토타입 객체는 누구인가요? | Object.prototype |
객체의 생성자 멤버는 속성인가요, 아니면 메서드인가요? | Method |
함수에는 __proto__가 있는데 그 이유는 무엇인가요? 값이 Object.prototype과 동일합니까? | 예, Function.prototype입니다. |
모든 생성자의 __proto__는 해당 프로토타입과 동일합니다. | 그건 옳지 않습니다 |
클래스 형태로 상속을 생성하는 4단계는 무엇인가요? | 상위 클래스 생성——>하위 클래스 생성——>상속 관계 결정——>생성자 변경 |
Function의 생성자 및 프로토타입 값을 수정할 수 있나요? | Can |
Object.prototype === Object.__proto__? | 그렇지 않나요 |
Function.prototype === Function.__proto__? | |
function F(){}; var f1 = new F();f1.__proto__ === Object.prototype인가요? | 그렇지 않아요 |
관련 권장 사항:
JS 프로토타입 상속의 두 가지 방법 비교_기본 지식
위 내용은 JS 프로토타입 상속을 위한 4단계의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!