javascript对象中的私有方法

时间:2014-10-17 09:00:22

标签: javascript oop object private

我的对象看起来像这样:

var obj ={

  property : '',
  myfunction1 : function(parameter){
     //do stuff here
  }
}

我需要设置一些私有属性和函数,这些属性和函数无法从对象外部访问/查看。它无法使用 var property:,var myFunction1

接下来的问题是,如果我在对象内部或外部调用函数,我总是必须使用obj.myfunction()执行此操作。我想签署这个"这个"变量。像self : this一样。并使用self.propertyself.myfunction调用对象内部的函数和变量。

如何? :)

3 个答案:

答案 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(); }
    };
}();