コンストラクター関数内のプロトタイプメソッドの割り当て:潜在的な落とし穴
スタイリスト的に、プロトタイプ方法を定義するための次の構造を好むものもあります:
var Filter = function( category, value ){ this.category = category; this.value = value; // product is a JSON object Filter.prototype.checkProduct = function( product ){ // run some checks return is_match; } };varフィルター=関数(カテゴリ、価値){ this.category = category; this.value = value; //製品はJSONオブジェクトです filter.prototype.checkproduct = function(crodce){ //いくつかのチェックを実行します IS_MATCHを返します。 } };
ただし、このアプローチには、代替構造と比較していくつかの欠点があります。 this.category = category; this.value = value; }; // var filter = function(){...} filter.prototype.checkproduct = function(crodce){ //いくつかのチェックを実行します IS_MATCHを返します。 }
var Filter = function( category, value ){ this.category = category; this.value = value; // product is a JSON object Filter.prototype.checkProduct = function( product ){ // run some checks return is_match; } };
機能的欠点:
var Counter = function(initialValue){ var value = initialValue; // product is a JSON object Counter.prototype.get = function() { return value ; } }; var c1 = new Counter(0); var c2 = new Counter(10); console.log(c1.get()); // outputs 10, should output 0
結論:
最初の構造は様式的に心地よいかもしれませんが、機能的な欠点と範囲の問題を導入できます。一般に、潜在的な問題を回避するために、コンストラクター関数の外側(2番目の構造のように)外部にプロトタイプメソッドを割り当てることをお勧めします。免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3