WEB开发网
开发学院网页设计JavaScript JavaScript面向对象程序设计(6): 封装 阅读

JavaScript面向对象程序设计(6): 封装

 2009-09-11 00:00:00 来源:WEB开发网   
核心提示: 这样看来,show里面的name和age并没有关键字,JavaScript面向对象程序设计(6): 封装(2),但也是可以正常的执行就会明白怎么回事了——因为前面已经用this把name和age与这个对象bill相关联,并且,3. 静态变量静态变量是绑定到类上面的,对于不

这样看来,show里面的name和age并没有关键字,但也是可以正常的执行就会明白怎么回事了——因为前面已经用this把name和age与这个对象bill相关联,并且,show也关联到这个bill变量,因此JavaScript是可以找到这两个变量的。

似乎由this修饰的都是公有变量。事实确实如此,如果你要使一个变量成为公有变量,可以使用this。像上面代码中的name和age都是公有变量,在外面使用aPerson.name或者aPerson.age就可以访问到。

2. 私有变量

怎么声明一个私有变量呢?事实上就像前面说的,JavaScript根本没有私有作用域这一说。那么来看下面的代码:

function Person(name, age) {
        var name = name; // 私有属性
     var age = age;
        var show = function() { // 私有函数
                alert("name: " + name + "; age: " + age);
        }
}
var bill = new Person("Bill", 20);
alert(bill.name); // undefined
bill.show(); // error, 不存在    

这段代码和前面几乎是相同的,只是把属性前面的this换成了var。我们知道,var是用来声明变量的。show函数和bill.name都是未定义!这是怎么回事呢?

回忆一下前面说过的JavaScript的new的过程。由于name和age都是使用var声明的,JavaScript会将它看作是一个普通的变量,这样在构造初始化结束之后,构造函数就返回了,变量因超出作用域而访问不到。也就是说,我们使用JavaScript变量作用域模拟了私有属性。

3. 静态变量

静态变量是绑定到类上面的。对于不同的对象来说,它们共享一个静态变量。

编缉推荐阅读以下文章

  • JavaScript面向对象程序设计(8): 优雅的封装还是执行的效率?
  • JavaScript面向对象程序设计(7): 闭包
  • JavaScript面向对象程序设计(5): 类
  • JavaScript面向对象程序设计(4): 函数
  • JavaScript面向对象程序设计(3): 对象
  • JavaScript面向对象程序设计(2): 数组
  • JavaScript面向对象程序设计(1): 前言
  • 理解JavaScript面向对象的思路
  • Javascript面向对象详解(第一部分)
  • JavaScript面向对象的支持(下)

Tags:JavaScript 面向 对象

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接