このようなクロージャーにコードをコピーすると
(function(){
var private1 = {},
private2 = {},
publik;
publik.get(object){
private1[object.name] = object;
};
window.publik = publik;
}())
publik.get({
// API
name: 'name_foo',
functionA: function(){
// I can not access private2 in here
},
functionB: function(){}
})
functionAとfunctionBがクロージャー内のプライベート2にアクセスできるように、APIが機能する方法はありますか?
それらはクロージャーにコピーされるので、コピーされたバージョンはそれにアクセスできるはずです。そのため、私はクロージャーを作成し、private1とprivate2をそのように組み合わせました。
オブジェクトの記述バージョン(コピーバージョンではない)はjslintでエラーをスローしますが、これはスコープルールに違反しているためだと思います。
関数の引数(パラメーターではない)は、グローバルスコープ内の名前のない変数であり、クロージャーにアクセスできません。
(がコピーされるまで:)
私が作成private1
しprivate 2
、同じオブジェクトが...ちょうど...そしてキーワードprivate
を使用してそれにアクセスした場合、それは機能しますか?this
しかし、私はそれらを別々に保ちたいと思います。