>웹 프론트엔드 >JS 튜토리얼 >JS 프로토타입 상속을 위한 4단계

JS 프로토타입 상속을 위한 4단계

小云云
小云云원래의
2017-12-07 15:55:111553검색

상속은 실제로 유형의 확장입니다. 그러나 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 프로토타입 상속과 클래스 상속에 대한 간략한 분석_기본 지식

JavaScript 프로토타입 상속 예제에 대한 자세한 설명

위 내용은 JS 프로토타입 상속을 위한 4단계의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.