Javascript功能,私有公共价值

时间:2014-02-12 01:14:13

标签: javascript

在我知道的javascript中,我们可以使用函数制作类类对象 但是有可能在功能中设置私有和公共功能和变量吗? 示例

var a = function(){
    this.public = "hello"
    var private = "hello"
    this.public_func = function(){ console.log("private function");};
    var private_func = function(){ console.log("public function");};
    }

所以public,public_func是public属性和private,private_func是private属性 我是对的吗?

3 个答案:

答案 0 :(得分:0)

私人和公共属性或功能仅在您从班级a中创建对象时生效。

所以在控制台中尝试这个:

var b = new a();

然后检查b,您将只看到:

a {public: "hello", public_func: function}

答案 1 :(得分:0)

按您所述的方式运行的代码:

var a = function(){
    this.public = "hello";
    var private = "hello";
    this.public_func = function(){ 
        console.log("public function");
        //calling the 'private' function.
        private_func();
    };
    var private_func = function(){ 
        console.log("private function");
    };
}

但这种方式不会继承。检查原型继承。 小心保留的话: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Reserved_Words

答案 2 :(得分:0)

您可以像其他基于类的语言一样模仿私有属性/函数,并且有很多方法可以做到这一点,例如,这是通过显式返回对象(Fiddle)来公开某些公共成员的示例:

var MyClass = (function(){
    var privateProp = "Private property accessed via public function";
    var privateFunc = function(){
        console.log(privateProp);
    };

    // Expose these as public members
    return {
        'publicProp':'Public Prop',
        'publicFunc':function(){
            privateFunc();
        }
    };

})();

// Use
console.log(MyClass.publicProp); // Public Prop
MyClass.publicFunc(); // Private property accessed via public function

这是一个很重要的术语,您需要阅读有关此主题的书籍和文章(OOP JavaScript),您可以阅读Addy Osmani在线撰写的Learning JavaScript Design Patterns book。这是一个很好的。