ホームページ > ウェブフロントエンド > jsチュートリアル > カプセル化を実装するためのJSシミュレーション方法

カプセル化を実装するためのJSシミュレーション方法

php中世界最好的语言
リリース: 2018-04-16 14:14:09
オリジナル
1281 人が閲覧しました

今回は、JS シミュレーションを使用してカプセル化を実装する方法について説明します。実際のケースを見てみましょう。

言葉の前に 継承とは、サブクラスを使用して別の親クラスを継承することで、サブクラスは親クラスのすべてのプロパティとメソッドを自動的に持つことができます。このプロセスは継承と呼ばれます。 JS で継承を実装する方法はたくさんありますが、今日はそのうちの 3 つを紹介します。

1.

オブジェクトクラス

に拡張メソッド

を追加します。 継承を実装するための上記の原則:

ループを通じて、親クラス オブジェクトのすべての属性とメソッドがサブクラス オブジェクトに割り当てられます。ポイントは for-in ループです。Object を拡張しなくても、単純なループで実装できます。

しかし、この方法で継承を実装することにはいくつかの欠点もあります:

① 1 回のインスタンス化では完全なサブクラス オブジェクトを直接取得することはできません。まず親クラス オブジェクトとサブクラス オブジェクトを取得してから、それらを手動でマージする必要があります ②Objectを拡張した継承メソッドはサブクラスのオブジェクトにも保持されます。

継承を実装する 2 番目の方法を見てみましょう~

2. プロトタイプの継承を使用する

このメソッドを紹介する前に、プロトタイプ オブジェクトとプロトタイプという 2 つの概念について説明しましょう

1. プロトタイプ: 関数のプロトタイプ オブジェクト

①プロトタイプを持つのは関数のみであり、すべての関数にはプロトタイプが必要です ②プロトタイプ自体もオブジェクトです!

③プロトタイプは現在の関数が配置されている参照アドレスを指しています。

2.

プロト

: オブジェクトのプロトタイプ!

①オブジェクトのみがプロトを持ち、すべてのオブジェクトはプロトを持たなければなりません ② 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();
ログイン後にコピー

プロトタイプ継承を使用する原則:

親クラス オブジェクトをサブクラスのプロトタイプに割り当てると、親クラス オブジェクトの属性とメソッドがサブクラスのプロトタイプに表示されます。次に、サブクラスをインスタンス化するときに、サブクラスのプロトタイプがサブクラス オブジェクトのプロトに含まれます。最後に、親クラス オブジェクトの属性とメソッドがサブクラス オブジェクトのプロトに表示されます。

この継承の特徴:

① サブクラス自身の属性はすべてメンバ属性であり、親クラスから継承した属性はプロトタイプ属性です。 ② ワンステップインスタンス化では完成したサブクラスオブジェクトをまだ取得できません。

継承を実装する 3 番目の方法:

call()、apply()、bind()、これら 3 つのメソッドは非常に似ていますが、パラメーターを渡す点のみが異なります。 りー 3 つの関数の唯一の違いは、func のパラメーター リストの受け取り方法です。それ以外には、機能に違いはありません。

3つの関数の書き方(違い):

呼び出しの書き込みメソッド: func.call (func、func パラメータ 1、func パラメータ 2、... の this が指すオブジェクト); applyの書き方: func.apply(funcのthisが指すobj, [funcパラメータ1, funcパラメータ2,...]);

バインドの書き方: func.bind (func の this が指すオブジェクト) (func パラメータ 1, func パラメータ 2,...);

この記事の事例を読んだ後は、方法を習得したと思います。興味深い情報ですので、他の php 中国語 Web サイト関連記事にもご注目ください。

推奨読書:


以上がカプセル化を実装するためのJSシミュレーション方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート