原型链

function Foo() {
this.value = 42;
}
Foo.prototype = {
method: function() {}
}; function Bar() {} // 设置Bar的prototype属性为Foo的实例对象
Bar.prototype = new Foo();
Bar.prototype.foo = 'Hello World'; // 修正Bar.prototype.constructor为Bar本身
Bar.prototype.constructor = Bar; var test = new Bar() // 创建Bar的一个新实例 // 原型链
test [Bar的实例]
Bar.prototype [Foo的实例]
{ foo: 'Hello World' }
Foo.prototype
{method: ...};
Object.prototype
{toString: ... /* etc. */};
为何要设置Bar.prototype.constructor = Bar;因为每一个对象(函数的prototype也是一个对象)都有一个constructor属性,这个属性指向构造这个对象的函数,因此假如不加上这句的话Bar.prototype.constructor指向的是Foo,而不是Bar本身一个对象的constructor是它的构造函数的prototype.constructor,而每一个函数都有一个prototype,默认情况下,这个prototype有一个constructor属性,指向的是它自己
参考:
http://www.cnblogs.com/yinzixin/archive/2010/01/09/1642913.htmlhttp://www.cnblogs.com/TomXu/archive/2012/01/05/2305453.html

最新文章

  1. String类的功能
  2. LoadRunner 事务函数
  3. Unity3.0基于约定的自动注册机制
  4. 关于JDK,tomcat,MyEclipse的配置
  5. rails 配置使用mysql
  6. jQuery插件Skippr实现焦点图
  7. DZ升级到X3.2后,UCenter用户管理中心进不了了
  8. 排名第一、第二的OCR软件
  9. 根据请求头跳转判断Android&iOS
  10. nginx的反向代理和负载均衡的区别是什么 - 开源中国社区
  11. [ERROR] Fatal error: Can't open and lock privilege tables: Table 'mysql.user' doesn't exist 160913 02:11:21 mysqld_safe mysqld from pid file /tmp/mysql.pid ended
  12. Quart.Net分布式任务管理平台(续)
  13. Linux 中使用 firewalld
  14. FastJson序列化Json自定义返回字段,普通类从spring容器中获取bean
  15. CodeForce 517 Div 2. B Curiosity Has No Limits
  16. C#程序终止问题CLR20R3解决方法
  17. underscore.js源码研究(5)
  18. Spark学习笔记4:数据读取与保存
  19. Codeforces Round #425 (Div. 2))——A题&&B题&&D题
  20. Yii2学习笔记:汉化yii,设置表单的描述(属性标签attributeLabels)

热门文章

  1. mongodb driver2.5环境注意事项
  2. SnowFlake 生成全局唯一id
  3. bzoj 2780: [Spoj]8093 Sevenk Love Oimaster(广义SAM)
  4. [ActionScript 3.0] 简单倒计时
  5. linux使用rsync、inotify-tools实现多台服务器文件实时同步
  6. 基础篇:6.5)形位公差-公差带 Tolerance Zone
  7. 【算法笔记】B1044 火星数字
  8. Python之人工智能(一)
  9. rest-framework框架组件
  10. Python爬虫:常用的浏览器请求头User-Agent(转)