JavaScript享元モード原理と使い方例の詳細
4522 ワード
本論文の実例は、JavaScript享元モード原理と使い方を述べている。皆さんに参考にしてあげます。具体的には以下の通りです。
二つの例の対比によって,享元モードの特徴を明らかにした。享元モードは性能(空間複雑度)を向上させるための設計モードであり,享元モードは多くの非常に類似した種類のオーバーヘッドを回避できる。
第1の例では、享元モードが使用されず、時間と空間の使用度が計算される。
車の登録をする都市があります。
(1)自動車類
(1)自動車類
第1のケース図解:毎回同じインスタンスが生成される。
第二の場合:内在部分(不変)+外部状態(変化)の図解
関心のある友達はオンラインHTML/CSS/JavaScript先端コードを使ってデバッグ実行ツールを実行できます。http://tools.jb51.net/code/WebCodeRunは上記のコードの運行効果をテストします。
さらに、JavaScriptに関する内容については、当駅のテーマを見ることができます。「javascript対象向け入門教程」、「JavaScriptエラーとデバッグテクニックのまとめ」、「JavaScriptデータ構造とアルゴリズム技術のまとめ」、「JavaScriptはアルゴリズムと技術の総括を遍歴します。」、「JavaScript数学演算の使い方のまとめ」
本論文で述べたように、JavaScriptプログラムの設計に役に立ちます。
二つの例の対比によって,享元モードの特徴を明らかにした。享元モードは性能(空間複雑度)を向上させるための設計モードであり,享元モードは多くの非常に類似した種類のオーバーヘッドを回避できる。
第1の例では、享元モードが使用されず、時間と空間の使用度が計算される。
車の登録をする都市があります。
(1)自動車類
/**
*
*
*
*
*
*/
var Car = function(make,model,year,owner,tag,renewDate){
this.make = make;
this.model = model;
this.year = year;
this.owner = owner;
this.tag = tag;
this.renewDate = renewDate;
this.getMake = function(){
return this.make;
}
}
(2)装飾者モードを使う--関数の計算時間
// ..
var simpleProfiler = function(componet){
this.componet = componet;
this.action = function(methodName){
var self = this;
var method = componet[methodName];
//
if(typeof method == "function"){
var startDate = new Date().getTime();//
method.apply(self.componet,arguments);
var endDate = new Date();//
alert(endDate - startDate);
}
}
}
(3)具体的な例として、4150000台の車は登録が必要です。
var ca = new Array();
function addCar(){
this.begin = function(){
for (var i = 0; i < 4150000; i++) {
ca.push(new Car("BMW"," ","2017-10-18",
"","GBMW88","2017-10-19"));
}
}
}
new simpleProfiler(new addCar()).action("begin")
第二の例:享元モードを使用する(1)自動車類
/**
*
*
*
*
*
*/
var Car = function(make,model,year){
this.make = make;
this.model = model;
this.year = year;
this.getMake = function(){
return this.make;
}
}
(2)一例モデルの簡易工場
//
var myCarInfo = function(){
this.createCar = function(make,model,year,owner,tag,renewDate){
var c = carInfoFactory(make,model,year);
c["owner"] = owner;
c["tag"] = tag;
c["renewDate"] = renewDate;
return c;
}
}
var carInfoFactory = (function(){
var carInfo = {};
return function(make,model,year){
if(carInfo[make+model+year]){
return carInfo[make+model+year];
}else{
var newCar = new Car(make,model,year);
carInfo[make+model+year] = newCar;
return newCar;
a
}
}
})();
(3)4150000台の車があります。登録が必要です。
var test = new myCarInfo();
var startDate = new Date().getTime();
var ca = new Array();
for (var i = 0; i < 4150000; i++) {
ca.push(test.createCar("BMW"," ","2017-10-18",
"","GBMW88","2017-10-19"))
}
var endDate = new Date();
alert(endDate - startDate);
上記の2つの例から、第1の例は、享元モードを使用していないが、第2の使用に比べて、享元モードの消費時間は少ないが、空間消費が大きく、第2の時間が多く、しかし、空間消費が小さいことが分かる。第1のケース図解:毎回同じインスタンスが生成される。
第二の場合:内在部分(不変)+外部状態(変化)の図解
関心のある友達はオンラインHTML/CSS/JavaScript先端コードを使ってデバッグ実行ツールを実行できます。http://tools.jb51.net/code/WebCodeRunは上記のコードの運行効果をテストします。
さらに、JavaScriptに関する内容については、当駅のテーマを見ることができます。「javascript対象向け入門教程」、「JavaScriptエラーとデバッグテクニックのまとめ」、「JavaScriptデータ構造とアルゴリズム技術のまとめ」、「JavaScriptはアルゴリズムと技術の総括を遍歴します。」、「JavaScript数学演算の使い方のまとめ」
本論文で述べたように、JavaScriptプログラムの設計に役に立ちます。