在我知道的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属性 我是对的吗?
答案 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。这是一个很好的。