添加私有函数
迄今为止,我们为“类”库添加的属性都是“公开的”,可以被随时修改。现在我们来探究一下如何给“类”添加私有属性。
很多开发者都习惯在私有属性之前冠以下画线前缀(_)。尽管本质上这并不是私有属性,但至少能一眼看出它们就是私有属性,因此它是私有API 的组成部分。我尽可能地不考虑这种情况,因为它看上去实在太丑陋了。
JavaScript 的确支持不可变属性,然而在主流浏览器中并未实现,我们还没办法直接利用这个特性。相反,我们可以利用JavaScript 匿名函数来创建私有作用域,这些私有作用域只能在内部访问:
- var Person = function(){};
- (function(){
- var findById = function(){ /* ... */ };
- Person.find = function(id){
- if (typeof id == "integer")
- return findById(id);
- };
- })();
我们将类的属性都包装进一个匿名函数中,然后创建了局部变量(findById),这些局部变量只能在当前作用域中被访问到。Person 变量是在全局作用域中定义的,因此可以在任何地方都能访问到。
广州网站建设,广州网站设计,广州网站制作,网站建设,网站设计,广州网站建设公司,广州网站设计公司
定义变量的时候不要丢掉var 运算符,因为如果丢掉var 就会创建全局变量。如果你需要定义全局变量,在全局作用域中定义它或者定义为window 的属性:
- (function(exports){
- var foo = "bar";
- // 将变量暴露出去
- exports.foo = foo;
- })(window);
- assertEqual(foo, "bar");