プロトタイプとプロトタイプチェーン、および継承

今日では、試作品の見直しと知識のプロトタイプチェーンの下に、知識やレコードが学ぶために何か新しいものを継承しています。


知識ポイントのプラットフォーム

  • プロトタイプとプロトタイプチェーン
  • ES5およびES6継承


プロトタイプチェーンとは何ですか

図は、プロトタイプチェーンです。グローバルオブジェクトウィンドウは、3つのプロパティオブジェクト、配列、関数を持っています。このプロパティは、3つのprototypeプロパティには非常に多くの方法で、3つのprototypeプロパティを持っています。オブジェクト、配列や関数を宣言するときに呼び出すために私たちを助けます。

注意:JS関数でオブジェクトがあります

15907671-98fa173e754c50ca.png
image.png

たとえば、私たちは空のオブジェクトaを宣言し、この空のオブジェクトが持つtoStringメソッドのシリーズを

15907671-3f9f135e3061ac20.png
image.png

15907671-940b1d38ff8ad450.png
image.png

そして、もう一つの例によるない1オブジェクトの配列。

プロセスは次のようにありますか?
我々はオブジェクトを作成すると、オブジェクトと__proto__そのプロパティ__proto__属性は指しますだから、呼び出したときからの方法は、この方法は、それ自体が目的ではないので、彼は、つまり、探すため存在であるので、オブジェクトが呼び出すことができるようになります方法を。ObjectprototypetoString__proto__ObjectprototypetoString

15907671-278f3155af1dcc0c.png
image.png

どのように継承?

1

function Person(name, sex){
    this.name = name;
    this.sex = sex;
}

Person.prototype.printName = function(){
    console.log(this.name);
};

function Male(name, sex, age){
    Person.call(this, name, sex);
    this.age = age;
}

Male.prototype = Object.create(Person.prototype);

Male.prototype.printAge = function(){
    console.log(this.age);
};

2

function Person(name,sex){
  this.name = name;
  this.sex = sex;
}

Person.prototype.printName = function(){
  console.log(this.name)
}

function Male(name,sex,age){
  Person.call(this,name,sex)
  this.age = age;
}
Male.prototype = new Person()
Male.prototype.printAge = function(){
  console.log(this.age)
}
Male.prototype.constructor = Male

3

class Human {
  constructor(name) {
    this.name = name
  }
  run() {
    console.log('I can run')
  }
}

class Man extends Human {
  constructor(name) {
    super(name)
    this.gender = '男'
  }
  fight(){
    console.log('I can fight')
  }
}

おすすめ

転載: blog.csdn.net/weixin_33919950/article/details/90937544