你不知道的JS-读书笔记(五)--原型[Prototype]
来源:互联网 发布:身份证合成软件 编辑:程序博客网 时间:2024/06/03 17:24
[[Prototype]] 链
function Foo () { this.tmp = 'b'}var a = new Foo()Object.getPrototypeOf(a) === Foo.prototype // truea.tmp // 'b'
调用
new Foo()
时会创建a
, 其中的一步就是给a
一个内部的[[Prototype]]
链接, 关联到Foo.prototype
指向的那个对象。
constructor 属性
// 接上代码Foo.prototype.constructor === Foo // truea.constructor === Foo // true
constructor
属性常被误解为指向构造函数,即这里的 Foo
,实际上 a
本身并没有 constructor
属性,而是从 [[Prototype]]
链中找到该属性并返回的,验证如下
function Foo () { // ...}Foo.prototype = {}var a1 = new Foo()a1.constructor === Foo // falsea1.constructor === Object // true
a1
并没有constructor
属性, 所以它会委托[[Prototype]]
链上的Foo.prototype
。 但是这个对象也没有constructor
属性(不过默认的Foo.prototype
对象有这个属性! ), 所以它会继续委托, 这次会委托给委托链顶端的Object.prototype
。 这个对象有constructor
属性, 指向内置的Object(..)
函数。
小结
原型链的顶端是 Object.prototype
, 如果在原型链中找不到指定的属性就会停止。 toString()
、 valueOf()
和其他一些通用的功能都存在于 Object.prototype
对象上, 因此语言中所有的对象(除去通过 Object.create(null)
声明的对象)都可以使用它们。
阅读全文
0 0
- 你不知道的JS-读书笔记(五)--原型[Prototype]
- 你不知道的JS读书笔记5—原型继承
- 你不知道的JS-读书笔记(三)--this和对象原型
- 你不知道的JS读书笔记4—原型与原型链
- 你不知道的JS-读书笔记(一)--作用域
- 你不知道的JavaScript--Item15 prototype原型和原型链详解
- 你不知道的JS读书笔记2—this对象
- 你不知道的javascript之JS原型对象和原型链
- 你不知道的JS-读书笔记(二)--闭包,模块
- 你不知道的JS-读书笔记(四)--混合对象类
- 《你不知道的JavaScript》读书笔记(一)
- 你不知道的JavaScript(上卷)读书笔记
- 《你不知道的JavaScript(上卷)》读书笔记
- 读书笔记-你不知道的JavaScript(上)
- 《你不知道的JavaScript》读书笔记一
- 你不知道的javascript读书笔记
- JS 的 prototype(原型)到底是个啥?
- 你不知道的JavaScript(五)内置对象模版
- mysql实现类似oracle merge into功能
- 评“没有目标的前进不如后退”
- 第6章 第8题 读取文件内容
- 高版本CAD画直线时,点击F8正交卡死解决方法
- java连接mysql
- 你不知道的JS-读书笔记(五)--原型[Prototype]
- 使用wkhtmltopdf将网页转换为PDF时echarts图表线条不完整
- 安卓控件工具类
- poj1724——ROADS
- SourceTree 免登录跳过初始设置
- oracle中sql语句查询优化(七)
- Q-learning算法实现
- PTA-玩转二叉树
- Debian9:修改默认网卡为eth0,ifconfig