0 Comments

添加私有函数

发布于:2014-04-01  |   作者:广州网站建设  |   已聚集:人围观

添加私有函数

迄今为止,我们为“类”库添加的属性都是“公开的”,可以被随时修改。现在我们来探究一下如何给“类”添加私有属性。

很多开发者都习惯在私有属性之前冠以下画线前缀(_)。尽管本质上这并不是私有属性,但至少能一眼看出它们就是私有属性,因此它是私有API 的组成部分。我尽可能地不考虑这种情况,因为它看上去实在太丑陋了。

JavaScript 的确支持不可变属性,然而在主流浏览器中并未实现,我们还没办法直接利用这个特性。相反,我们可以利用JavaScript 匿名函数来创建私有作用域,这些私有作用域只能在内部访问:


  1. var Person = function(){};  
  2. (function(){  
  3. var findById = function(){ /* ... */ };  
  4. Person.find = function(id){  
  5. if (typeof id == "integer")  
  6. return findById(id);  
  7. };  
  8. })(); 

我们将类的属性都包装进一个匿名函数中,然后创建了局部变量(findById),这些局部变量只能在当前作用域中被访问到。Person 变量是在全局作用域中定义的,因此可以在任何地方都能访问到。
广州网站建设,广州网站设计,广州网站制作,网站建设,网站设计,广州网站建设公司,广州网站设计公司

定义变量的时候不要丢掉var 运算符,因为如果丢掉var 就会创建全局变量。如果你需要定义全局变量,在全局作用域中定义它或者定义为window 的属性:


  1. (function(exports){  
  2. var foo = "bar";  
  3. // 将变量暴露出去  
  4. exports.foo = foo;  
  5. })(window);  
  6. assertEqual(foo, "bar"); 
标签:
飞机