動的な言語として、JavaScriptのオブジェクトJSは構文にかなりの自由度を持っているため、関数とNの書き込みスタイルを作成します。
JSでは、一般にOOPを実装する2つの方法があります。
最初:このキーワードを使用します
functionclass1()
{
this.onclick = function(e)
{
for(vari = 0; i <1000; i ++)
{
vara = newdate();
}
}
}
これを使用します。方法は、オブジェクトにプロパティとメソッドを柔軟に追加することができ、ほとんどのOOP言語に似ており、操作中に追加することもできます。
2番目のタイプ:プロトタイプキーワードを使用します
functionclickfunc(e)
{
for(vari = 0; i <1000; i ++)
{
vara = newdate();
}
}
functionclass2()
{
}
class2.prototype.onclick = clickfunc;
使用に関しては、柔軟性があると思われる最初のものはありません。ただし、オブジェクトが新しい前に、オブジェクトのプロパティとメソッドをいつでも追加することもできます。
しかし、それらは平等ではありません。比較的言えば、最初の方法は比較的集中しており、コードを読みやすいので、最初のものを好みます。ただし、実行すると、動作効率は大きく異なります。以下のテストコードを見てみましょう。
vartotal = newArray();
functionTest1()
{
vara = newdate();
for(vari = 0; i <10000; i ++)
{
varc = newClass1();
//total.push(c);
}
varb = newdate();
alert(b.gettime()-a.gettime());
}
functionTest2()
{
vara = newdate();
for(vari = 0; i <10000; i ++)
{
varc = newClass2();
//total.push(c);
}
varb = newdate();
alert(b.gettime()-a.gettime());
}
最初のステップは、実行時間をテストすることです。Test1()には142msが必要であり、Test2()には50msしかかかりません。時間効率の点では、プロトタイプ法はこれよりも効率的です。