私の質問は次のとおりです。私がクロージャについて読んだほとんどまたはすべてのチュートリアルでは、クロージャの最も重要な資産は、プライベート メンバーを定義できると説明されています。たとえば、素晴らしい nettuts の Web サイトから: http://net.tutsplus.com/tutorials/javascript-ajax/digging-into-design-patterns-in-javascript/ . 私の質問は次のとおりです。Object.definteProperty を使用できるのに、なぜクロージャーを使用して、やや不自然な構文でオブジェクトを作成することを選択するのですか? 例えば
var o = {}; // Creates a new object
// Example of an object property added with defineProperty with a data property descriptor
Object.defineProperty(o, "a", {value : 37,
writable : false,
enumerable : true,
configurable : true});
// 'a' property exists in the o object and its value is 37
どちらの方法も従来の OOP 言語よりもはるかに長いことは認めざるを得ませんが、2 番目の方法の方が自然ではありませんか? では、なぜクロージャーはそれほど人気があるのでしょうか?クロージャーには他にどのような資産があり、クロージャーを使用してオブジェクトを作成することと、先ほど説明した方法でオブジェクトを作成することの違いは何ですか?