この記事では、このアプローチの長所と短所を客観的に検討し、誰もがそれを使用するかどうかを自分で決定できるようにすることを提案します。
ですから、まずは議論の対象です。 「コンストラクタ-プロトタイプ」リンクを使用してオブジェクトの作成を比較します(つまり、すべてのメソッドはプロトタイプに格納され、すべてのプロパティはコンストラクターによって作成されます)
function make_obj(a, b) {
this.prop1 = a;
this.prop2 = b;
}
make_obj.prototype = {
method1: function(){...},
method2: function(){...},
methodN: ...
}
* This source code was highlighted with Source Code Highlighter.
( -, , , ).
function make_obj(a, b) {
var prop1 = a;
var prop2 = b;
method1 = function(){...}
method2 = function(){...}
methodN = ...
}
* This source code was highlighted with Source Code Highlighter.
«» «», .
( ) «» . , , , .
this (property = 5 this.property = 5, ).
.
- , , , , , - . , — , .
- JavaScript, JScript ECMA-262 «», . , — . , «» — , . — .
, . ( ) (.. ). , 1000 , 15 , «» , «». IE6 250 , IE7 — 110. 15.
100-200 , - (.. «» , , ).
, , . 3-4 , + 25-50 , .
50 — ( ).
- «» private , protected (.. , ) .
, .. , ( ).
- , this[(a > 2? 'max': 'min')]
, .
- . , , , - ( , ).
, .
- PHP5 , , private public, public protected — .
JS, this. .
, , , , , 100%, .
, «» ( - ), .
, - ( ) , , , , (, - ).