今日では、試作品の見直しと知識のプロトタイプチェーンの下に、知識やレコードが学ぶために何か新しいものを継承しています。
知識ポイントのプラットフォーム
- プロトタイプとプロトタイプチェーン
- ES5およびES6継承
プロトタイプチェーンとは何ですか
図は、プロトタイプチェーンです。グローバルオブジェクトウィンドウは、3つのプロパティオブジェクト、配列、関数を持っています。このプロパティは、3つのprototypeプロパティには非常に多くの方法で、3つのprototypeプロパティを持っています。オブジェクト、配列や関数を宣言するときに呼び出すために私たちを助けます。
注意:JS関数でオブジェクトがあります
たとえば、私たちは空のオブジェクトaを宣言し、この空のオブジェクトが持つtoString
メソッドのシリーズを
そして、もう一つの例によるない1オブジェクトの配列。
プロセスは次のようにありますか?
我々はオブジェクトを作成すると、オブジェクトと__proto__
そのプロパティ__proto__
属性は指します。だから、呼び出したときからの方法は、この方法は、それ自体が目的ではないので、彼は、つまり、探すための存在であるので、オブジェクトが呼び出すことができるようになります方法を。Object
prototype
toString
__proto__
Object
prototype
toString
どのように継承?
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')
}
}