Javascript的构造函数和constructor属性
2024-09-21 06:21:58
原型链
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
最新文章
- String类的功能
- LoadRunner 事务函数
- Unity3.0基于约定的自动注册机制
- 关于JDK,tomcat,MyEclipse的配置
- rails 配置使用mysql
- jQuery插件Skippr实现焦点图
- DZ升级到X3.2后,UCenter用户管理中心进不了了
- 排名第一、第二的OCR软件
- 根据请求头跳转判断Android&;iOS
- nginx的反向代理和负载均衡的区别是什么 - 开源中国社区
- [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
- Quart.Net分布式任务管理平台(续)
- Linux 中使用 firewalld
- FastJson序列化Json自定义返回字段,普通类从spring容器中获取bean
- CodeForce 517 Div 2. B Curiosity Has No Limits
- C#程序终止问题CLR20R3解决方法
- underscore.js源码研究(5)
- Spark学习笔记4:数据读取与保存
- Codeforces Round #425 (Div. 2))——A题&;&;B题&;&;D题
- Yii2学习笔记:汉化yii,设置表单的描述(属性标签attributeLabels)
热门文章
- mongodb driver2.5环境注意事项
- SnowFlake 生成全局唯一id
- bzoj 2780: [Spoj]8093 Sevenk Love Oimaster(广义SAM)
- [ActionScript 3.0] 简单倒计时
- linux使用rsync、inotify-tools实现多台服务器文件实时同步
- 基础篇:6.5)形位公差-公差带 Tolerance Zone
- 【算法笔记】B1044 火星数字
- Python之人工智能(一)
- rest-framework框架组件
- Python爬虫:常用的浏览器请求头User-Agent(转)