在javascript中,我有一个包含函数的对象,并希望向其添加一个私有成员。 我怎么能这样做?
function function1 () {
var function2 = function () {
console.log("This is an actual function.");
}
function2.publicMember = 5;
function2.privateMember = 7;
return function2;
}
我希望function1的用户无法访问privatMember。 我发现了这个问题,但我无法将其转化为我的情况,因为我的对象是一个函数:
How to add private variable to this Javascript object literal snippet?
谢谢!
答案 0 :(得分:1)
将其包装成另外一个函数以创建新范围(即使用iife):
function function1 () {
var function2 = (function(){
var privateMember = 7;
return function () {
privateMember ++; // do something with really private member
console.log("This is an actual function.");
}
})();
function2.publicMember = 5;
return function2;
}
答案 1 :(得分:1)
声明需要访问它们的函数内的变量:
function function1 () {
var publicMember = 5;
var function2 = function () {
var privateMember = 7;
console.log("This is an actual function.");
}
return function2;
}
因此,function2可以在其自己的闭包(privateMember)和任何父作用域中看到变量。