継承とは、サブクラスを使用して別の親クラスを継承することで、サブクラスは親クラスのすべてのプロパティとメソッドを自動的に持つことができます。このプロセスは継承と呼ばれます。 JS で継承を実装する方法はたくさんありますが、今日はそのうちの 3 つを紹介します。この記事を使用して、js シミュレーションを通じてカプセル化する 3 つの方法について学びましょう。必要な方はぜひ参考にしてください。
1. Object クラスに拡張メソッドを追加します
//声明一个父类 function Person(name){ this.name=name; this.age=age; this.say=function(){ alert("我叫"+this.name); } } //声明一个子类 function Student(){ this.no=no; this.study=function(){ alert("我在学习!"); } } // 通过循坏,将父类对象的所有属性和方法,全部赋给子类对象 Object.prototype.extend=function(parent){ for(var i in parent){ this[i].parent[i]; } } var p=new Person("张三",12); var s=new Student("1234567"); //子类对象调用这个扩展方法 s.extend() console.log(s);
前述の継承の原則:
ループを通じて、親クラス オブジェクトのすべてのプロパティとメソッドを子クラス オブジェクトに割り当てます。ポイントは for-in ループです。Object を拡張しなくても、単純なループで実装できます。
しかし、このメソッドを使用して継承を実装する場合には、いくつかの欠点があります:
①1 回のインスタンス化を通じて完全なサブクラス オブジェクトを直接取得することはできません。最初に親クラスのオブジェクトとサブクラスのオブジェクトを取得してから、それらを手動でマージする必要があります
② Object を拡張する継承メソッドは、サブクラスのオブジェクトにも保持されます。
継承を実装する 2 番目の方法を見てみましょう~
2. プロトタイプ継承を使用します
この方法を紹介する前に、プロトタイプ オブジェクトとプロトタイプという 2 つの概念について説明します
1。
①プロトタイプを持つのは関数のみであり、すべての関数にはプロトタイプが必要です②プロトタイプ自体もオブジェクトです! ③プロトタイプは現在の関数の参照アドレスを指します! 2. __proto__: オブジェクトのプロトタイプ! ①オブジェクトのみが__proto__を持ち、すべてのオブジェクトが__proto__を持たなければなりません②__proto__もオブジェクトなので、独自の__proto__も持ちます。この線に沿って検索する順序がプロトタイプチェーンです。 ③ 関数と配列は両方ともオブジェクトであり、独自の __proto__ を持ちます//声明父类 function Person(name,age){ this.name=name; this.age=age; this.say=function(){ alert("我叫"+this.name); } } //声明子类 function Student(no){ this.no=no; this.study=function(){ alert("我在学习!我叫"+this.name+"今年"+this.age"); } } //将父类对象赋给子类的prototype Student.prototype=new Person("张三",14); //拿到子类对象时,就会将父类对象的所有属性和方法,添加到__proto__ var s=new Student(); s.study();
function Person(name,age){ this.name=name; this.age=age; this.say=function(){ alert("我叫"+this.name); } } function Student(no,name,age){ this.no=no; this.study=function(){ alert("我在学习!"); } //将父类函数的this,指向为子类函数的this Person.call(this,name,age); } var s=new Student(12,"张三",24); console.log(s);
jquery と ajax は 3 つの要素を実現しますレベル連携のカプセル化と非カプセル化の 2 つの方法で州と市区町村を実現
以上が3 つの JavaScript シミュレーション実装のカプセル化方法とその記述方法の違いを共有するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。