関数を返す関数の価値を理解することが重要です。この手法を使用すると、コード効率を向上させることができます。 JavaScriptの効率と、JavaScriptの強力さの理解が深まりました。
私は、あなたが私がコミュニケーションしようとしていたアイデアを得ることができるように、あなたを見せたいと思います。
のは、次の2つの子オブジェクト、getメソッドとの両方を持つ1つのホストオブジェクトを持っている、とまったく同じ作業を行うが、異なる属性の両方としましょう:同じコードを繰り返す
var accessors = {
sortable: {
get: function() {
return typeof this.getAttribute('sortable') != 'undefined';
}
},
droppable: {
get: function() {
return typeof this.getAttribute('droppable') != 'undefined';
}
}
};
は、理想的ではありません
function getAttribute(attr) {
return typeof this.getAttribute(attr) != 'undefined';
}
var accessors = {
sortable: {
get: function() {
return getAttribute('sortable');
}
},
droppable: {
get: function() {
return getAttribute('droppable');
}
}
};
余分な、中間の機能の実行は、メソッドが呼び出されるたびにありますので、多くの方が、まだ理想的ではないのです。私たちはそれを属性引数を渡し、1つの外部関数を作成することができます。最高の仕事とは何
は、最終的な機能を返される関数である - 取得するために、すべてのコールで、余分な機能の実行を排除するであろう:
function generateGetMethod(attr) {
return function() {
return typeof this.getAttribute(attr) != 'undefined';
};
}
var accessors = {
sortable: {
get: generateGetMethod('sortable')
},
droppable: {
get: generateGetMethod('droppable')
}
};
何を上記を参照して機能を返す関数です。各メソッドは、プロパティを取得する独自のメソッドを取得し、各get呼び出し時にオーバーヘッドはありません。
これは、同じようなコードを繰り返さないようにする、本当に便利なテクニックであり、正しく使用すると分かりやすく保守が容易です!
こんにちは、私はこの答えをもう一度読んで、私はまだ混乱していることに気付きました。コード例のv2で「get:getAttribute( 'sortable')」があった場合はどうなりますか?同じ結果を返しませんか? "get:generateGetMethod( 'sortable')" – Synia