JavaScriptのプロトタイプチェーン、継承

オブジェクトの作成

私たちは、最もよく知って言って新しいjsのを忘れてはならないjavascriptのプロトタイプは、すべての物事は、ああ、件名、私は知らない時間の量は、最も長い時間です。今、私はいくつかの真実、jsの中に可視オブジェクトの重要性を持っていないと言うのjsの話に感じます。オブジェクトを作成するので、十分な権利の方法はいくつかの方法があります。

 

 

 上記目的なるように作成する:リテラル、コンストラクタ、Object.create()。

プロトタイプチェーン

私に質問を同僚で、そのプロジェクトの開発を覚えて、あなたは私のプロトタイプチェーンの聖歌を教え、インターネット張私はすべての関係のリストとの間のリンクを解釈できる感じグラフ、だけでなく、いくつかのように検索する人基本的には非常に明確:

 

//コンストラクタ=== >> new演算子を使用してインスタンスを生成
//コンストラクタ世代のプロトタイプは=== >>プロトタイプオブジェクトへのポイント
//プロトタイプオブジェクトは、どのようにこの事によって自分自身=== >>コンストラクタを向ける人知っています独自のコンストラクタを構築するためのポイント。
//プロトタイプオブジェクトのインスタンス=== >> __proto__点
//プロトタイプチェーンに:最終的なプロトタイプオブジェクト層のObject.prototypeを発見し、これは鎖線構造があります。
//栗の場合:
CONSTのFn =機能(){ 
    this.name = "私の名前GongXiaoZhu IS"; 
} 
fn.prototype.say =機能(){ 
    はconsole.log(this.name); 
} 
新しい新しいのFn new_fn VAR = (); 
new_fn .__ proto__ === fn.prototype // trueに
trueにfn.prototype.constructorのFn // ===

上記プロトタイプ、コンストラクタ、例えば、プロトタイプチェーンとの間の関係を説明するために十分栗。いくつかの方法が一般的に処理するために使用されるために、我々はヒープメモリのプロトタイプオブジェクトを定義することができるように、関数の各インスタンスは、我々はプロセスを得ることができます。相続の中で最も完全なマップによって書かれたボリューム、:以下は、この計画はどのようなものので、木の全体のプロトタイプチェーンを理解する必要があります。

継承

コンストラクタの継承と1、

function Parent1() {
    this.name = "zhangsan"
}
function Child1() {
    Parent1.call(this);// apply
    this.age = 'Child1'
}
var children1 = new Child1();
console.log(children1)

 

 

 此种继承方式呐,由于改变的 Parent1 指向,不能继承 Parent1 原型对象上的方法。只能实现部分继承。

2、组合继承方式

function Parent1() {
    this.name = "zhangsan"
    this.arr = [1,2,3]
}
Parent1.prototype = function getName() {
    console.log(this.name);
}
function Child1() {
    Parent1.call(this);
    this.age = 'Child1'
}
Child1.prototype = new Parent1();

var a1 = new Child1();
var a2 = new Child1();
a1.arr.push('4')
console.log(a1,a2)

  

 

 从这里我们可以实现继承,但是还是有个弊端,Child1.prototype 对象指向的是Parent1.prototype,但是new Parent1() 的 constructor 指向的是 Parent1,所以我们可以直接Object.create(Parent1)这样既可。

function Parent1() {
    this.name = "zhangsan"
    this.arr = [1,2,3]
}
Parent1.prototype = function getName() {
    console.log(this.name);
}

function Child1() {
    Parent1.call(this);
    this.age = 'Child1'
}
Child1.prototype = Object.create(Parent1.prototype);
Child1.prototype.constructor = Child1;

var a1 = new Child1();
var a2 = new Child1();
a1.arr.push('4')
console.log(a1,a2)

这样就可以实现简单的继承,也希望能对您有所帮助,欢迎评论,关注,讨论技术可以关注 掘金 https://juejin.im/user/5cd2a2356fb9a0320c5ac8ad

 

おすすめ

転載: www.cnblogs.com/GongYaLei/p/11965215.html