我的对象看起来像这样:
var obj ={
property : '',
myfunction1 : function(parameter){
//do stuff here
}
}
我需要设置一些私有属性和函数,这些属性和函数无法从对象外部访问/查看。它无法使用
var property:,
或var myFunction1
接下来的问题是,如果我在对象内部或外部调用函数,我总是必须使用obj.myfunction()
执行此操作。我想签署这个"这个"变量。像self : this
一样。并使用self.property
和self.myfunction
调用对象内部的函数和变量。
如何? :)
答案 0 :(得分:1)
有很多方法可以做到这一点。简而言之:如果你在另一个函数中定义一个函数,你的内部函数将是私有的,只要你不提供对if的任何引用。
(function obj(){
var privateMethod = function() {};
var publicMethod = function() {
privateMethod();
...
};
return {
pubMethod: publicMethod
}
}());
答案 1 :(得分:0)
var obj = (function() {
var privateProperty;
var privateFunction = function(value) {
if (value === void 0) {
return privateProperty;
} else {
privateProperty = value;
}
};
var publicMethod = function(value) {
return privateFunction(value);
}
return {
getPrivateProperty: function() {
return privateFunction();
},
setPrivateProperty: function(value) {
privateFunction(value);
}
}
})();
obj.setPrivateProperty(3);
console.log(obj.getPrivateProperty());
// => 3
console.log(obj.privateProperty);
// => undefined
obj.privateFunction();
// => TypeError: undefined is not a function
答案 2 :(得分:0)
使用闭包。 JavaScript有function scope,因此您必须使用函数。
var obj = function () {
var privateVariable = "test";
function privateFunction() {
return privateVariable;
}
return {
publicFunction: function() { return privateFunction(); }
};
}();