每个对象都有原型,

prototype能够实现实例共享,节约使您有能力向对象添加属性和方法。

<script type="text/javascript">

function employee(name,job,born)
{
this.name=name;
this.job=job;
this.born=born;
} var bill=new employee("Bill Gates","Engineer",1985); employee.prototype.salary=null;
bill.salary=20000; document.write(bill.salary); </script> prototype可以封装私有的function,通过return的形式暴露出简单的使用名称,以达到public/private的效果
 Calculator.prototype = function () {
add = function (x, y) {
return x + y;
}, subtract = function (x, y) {
return x - y;
}
return {
add: add,
subtract: subtract
}
} (); //alert((new Calculator()).add(11, 3));
例二:
var BaseCalculator = function() {
this.decimalDigits = 2;
}; BaseCalculator.prototype = {
add: function(x, y) {
return x + y;
},
subtract: function(x, y) {
return x - y;
}
};

创建完上述代码以后,我们来开始:

var Calculator = function () {
//为每个实例都声明一个税收数字
this.tax = 5;
}; Calculator.prototype = new BaseCalculator();
 

Calculator的原型是指向到BaseCalculator的一个实例上,目的是让Calculator集成它的add(x,y)和subtract(x,y)这2个function,还有一点要说的是,由于它的原型是BaseCalculator的一个实例,所以不管你创建多少个Calculator对象实例,他们的原型指向的都是同一个实例。


var calc = new Calculator();
alert(calc.add(1, 1));
//BaseCalculator 里声明的decimalDigits属性,在 Calculator里是可以访问到的
alert(calc.decimalDigits);

上面的代码,运行以后,我们可以看到因为Calculator的原型是指向BaseCalculator的实例上的,所以可以访问他的decimalDigits属性值,那如果我不想让Calculator访问BaseCalculator的构造函数里声明的属性值,那怎么办呢?这么办:


var Calculator = function () {
this.tax= 5;
}; Calculator.prototype = BaseCalculator.prototype;

通过将BaseCalculator的原型赋给Calculator的原型,这样你在Calculator的实例上就访问不到那个decimalDigits值了,如果你访问如下代码,那将会提升出错。


var calc = new Calculator();
alert(calc.add(1, 1));
alert(calc.decimalDigits);
 

最新文章

  1. 使用DapperExtensions实现简单仓储
  2. Maven_profile_使用profile配置不同环境的properties(实践)
  3. 谈谈pooling?
  4. 关于一些学习html和css的笔记
  5. PROTEL DXP原理图编译 常见错误与处理方法
  6. iOS7上在xib中使用UITableViewController设置背景色bug
  7. PowerShell使用SMTP发送邮件
  8. 编写C# Windows服务,用于杀死Zsd.exe进程
  9. javascript笔记3之数据类型
  10. Hat’s Words(字典树)
  11. 自己封装的tc
  12. 机器学习爱好者 -- 翻译吴恩达老师的机器学习课程字幕 http://www.ai-start.com/
  13. 生产者与消费者 代码实现 java
  14. hibernate向mysql数据库插入中文显示??
  15. CSS:关于CSS Hack
  16. JavaScript的DOM_通过计算后样式来获取
  17. CSS3 圆环状进度条
  18. CentOS下MySQL的安装过程
  19. 【Android】12.0 UI开发(三)——列表控件ListView的简单实现2
  20. NGUI UILabel文字宽度和 UITweener

热门文章

  1. Js-Html 前端系列--页面撑开头尾
  2. java中的instanceof
  3. Raspberry Pi(树莓派)上从零开始构建Linux系统(简称PiLFS)(一)
  4. 三、spark入门:文本中发现5个最常用的word,排除常用停用词
  5. charles支持https抓包
  6. LIst去重,重写方法,继承接口。
  7. 安装用户脚本的福音:Tampermonkey(油猴)
  8. ssh爆破脚本
  9. redis(1)
  10. 工具-maya2014软件操作细节(持续更新……)