シンプルファクトリー//バスケットボール基本クラス var Basketball = function() { this.intro = 'バスケットボールはアメリカで人気があります'; } バスケットボール.プロトタイプ = { getMember: 関数() { console.log('各チームには5人のプレイヤーが必要です'); }, getBallSize: 関数() { console.log('バスケットボールはとても大きいです'); } } //フットボール基本クラス var Football = function() { this.intro = 'サッカーは世界中で人気があります'; } フットボール.プロトタイプ = { getMember: 関数() { console.log('各チームには11人のプレイヤーが必要です'); }, getBallSize: 関数() { console.log('フットボールはとても大きいです'); } } //スポーツファクトリー var SportsFactory = function(name) { スイッチ (名前) { 'NBA'の場合: 新しい Basketball() を返します。 ケース 'worldCup': 新しい Football() を返します。 } } //ワールドカップ用のサッカーボールを作成する必要がある場合は、スポーツ ファクトリ sportsFactory を呼び出して作成するだけです。var Footnall = SportsFactory('worldCup'); console.log(Footnall); console.log(Footnall.intro); Footnall.getMember(); //ファクトリーモード関数createBook(name, time, type) { var o = new Object(); //オブジェクトを作成し、オブジェクトのプロパティとメソッドを展開します //これは異なる部分です o.name = name; //書籍名 o.time = time; //書籍の出版時期 o.type = type; //書籍の種類 //以下は類似部分です o.getName = function() { コンソールにログ出力します。 }; //オブジェクトを返します return o; } // 2 冊の本を作成します var book1 = new createBook('JS book', 2021, 'js'); var book2 = new createBook('CSS book', 2019, 'css'); book1.getName(); book2.getName(); ファクトリーメソッドvar デモ = function() {} デモ.プロトタイプ = { 表示: 関数() { console.log('正常に取得されました'); } } var d = new Demo();//インスタンスを正しく作成 d.show(); //正常に取得 var d = Demo();//インスタンスの作成エラー d.show(); //爆発 var デモ = 関数() { if (!this instanceof Demo){//これが何を指しているかを判断します。 return new Demo(); } } デモ.プロトタイプ = { 表示: 関数() { console.log('セーフモードクラスは本当に便利です'); } } var d = デモ(); d.表示(); 安全な工場方法//セーフモードでファクトリークラスを作成する var Factory = function(type, content) { if (このインスタンスのファクトリー) { var s = new this[type](content); s を返します。 } それ以外 { 新しいファクトリー(type, content)を返します。 } } //ファクトリープロトタイプ内のすべてのタイプのデータオブジェクトを作成するための基本クラスを設定します。Factory.prototype = { java: 関数(コンテンツ) { //... }, UI: 関数(コンテンツ) { this.content = コンテンツ; (関数() { var div = document.createElement('div'); div.innerHTML = コンテンツ; div.style.border = '1px solidd red'; document.getElementById('コンテナ').appendChild(div); })(コンテンツ); }, php: 関数(コンテンツ) { //... }, javascript: 関数(コンテンツ) { //.. } }; //オブジェクトを作成 var data = [ { type: 'javascript', content: 'どのjsが最適か' }, { タイプ: 'java'、コンテンツ: 'どの Java が最適か' }, { type: 'UI', content: 'どの UI が最適か' } ]; for (let index = 0; index < data.length; index++) { console.log(データ[インデックス].type); ファクトリー(データ[インデックス].type、データ[インデックス].content); } アブストラクトファクトリーvar 車 = 関数() {} 車プロトタイプ = { 価格を取得する: 関数() { return new Error('抽象メソッドを呼び出すことができません'); }, 取得速度: 関数() { return new Error('抽象メソッドを呼び出すことができません'); } }; //抽象ファクトリーメソッド var VehicleFactory = function(subType, superType) { //抽象クラスが抽象ファクトリー内に存在するかどうかを判断します if (typeof VehicleFactory[superType] === 'function') { //キャッシュクラス関数 F() {}; //親クラスのプロパティとメソッドを継承する F.prototype = new VehicleFactory[superType](); //サブクラスのコンストラクターをサブクラスにポイントします。subType.constructor = subType; //サブクラスのプロトタイプは親クラスを継承します。subType.prototype = new F(); } それ以外 { //抽象クラスが存在しない場合は、new Error('抽象クラスは作成されませんでした') をスローします。 } }; //車の抽象クラスVehicleFactory.Car = function() { this.type = '車'; } VehicleFactory.Car.プロトタイプ = { 価格を取得する: 関数() { return new Error('抽象メソッドを呼び出すことができません'); }, スピードを取得する: 関数() { return new Error('抽象メソッドを呼び出すことができません'); } }; //バス抽象クラス VehicleFactory.Bus = function() { this.type = 'バス'; } VehicleFactory.Bus.プロトタイプ = { 価格を取得する: 関数() { return new Error('抽象メソッドを呼び出すことができません'); }, getPassengerNum: 関数() { return new Error('抽象メソッドを呼び出すことができません'); } } //抽象と実装//BMW車のサブクラス var BMW = function(price, speed) { this.price = 価格; this.speed = 速度; }; //抽象ファクトリは、Car 抽象クラスの継承を実装します。VehicleFactory(BMW, 'Car'); BMW.prototype.getPrice = function() { // メソッドを書き換えて、this.price を返します。 } BMW.prototype.getSpeed = 関数(){ this.speed を返します。 }; //宇通バスのサブクラス var YUTONG = function(price, passage) { this.price = 価格; this.passenger = 乗客; }; //抽象ファクトリは、BUS 抽象クラスの継承を実装します。VehicleFactory(YUTONG, 'Bus'); YUTONG.prototype.getPrice = 関数() { this.price を返します。 } YUTONG.prototype.getPassengerNum = 関数() { this.passenger を返します。 }; //クラスをインスタンス化します var myBMW = new BMW('100w', '1000km/h'); コンソールにログ出力します。 要約するこの記事はこれで終わりです。皆さんのお役に立てれば幸いです。また、123WORDPRESS.COM のその他のコンテンツにも注目していただければ幸いです。 以下もご興味があるかもしれません:
|
この記事では、トークンログイン認証を実装するためのVUEの具体的なコードを例として紹介します。具体的...
HTML は、Baidu 百科事典のナビゲーション ドロップダウン メニュー機能を模倣します。具体的...
yumコマンドYum (フルネームは Yellow dog Updater, Modified) ...
1. 以前 QT5.13 バージョンをダウンロードしましたが、インストール後、Qtcreator を...
Mysqlデータベーステーブルの定期的なバックアップの実装0. 背景実際の開発環境では、フロントエン...
以下のように表示されます。 mysql.proc から名前を選択します (db='データベー...
この記事の例では、WeChatアプレットのビデオプレーヤーコンポーネントの具体的なコードを参考までに...
目次ポータルエラー境界処理エラー境界を使用しない場合はどうなりますか?注記ポータルスロットとも言えま...
div を使用してマスクを作成したり、ポップアップ ウィンドウをシミュレートしたりします。ただし、I...
Navicat が MySql サーバーにリモート接続できない問題の解決策は、先頭に書かれています:...
まずは効果を見てみましょう:この効果は非常に華やかに見えますが、原理は複雑ではありません。1 枚の花...
Chrome ブラウザで Web ページを開くと、ページを右クリックすると 2 つの非常によく似たオ...
目次1. コンストラクタとプロトタイプ1. コンストラクター2. コンストラクタ問題3. コンストラ...
Web ページを作成するときに、テーブルの幅が揃っていないという問題に遭遇することがよくあります。 ...
1. Yumのインストール yum でサブバージョンをインストール 2. 構成1. 倉庫を作る/ho...