js prototype、constructor、__proto__、new详解
相关名词概念
名词 | 用途 | 形容 | 其余 |
---|---|---|---|
[[Construct]] | 对象的一个内置方法,用于创立对象,通过new或者者super关键字调用。 | 该内置方法的第一个参数是传入的参数列表。第二个参数是new所初始化的对象。最后返回一个Obejct。 | constructor调用实现该内置方法 |
constructor对象 | 用来创立和初始化一个对象。 | 是个具备prototype 属性的function对象。(这个prototype 属性保存的是一个指针,指向了prototype 对象所在的位置)。 | 通过new创立对象的时候会调用constructor方法,不使用new调用constructor的话,根据具体实现可能会得到不同结果。比方:new Date()得到的是当前日期Date对象,Date()则是当前时间字符串。 |
constructor属性 | 指向constructor对象 | 保存的是引用 | 无 |
prototype属性 | 指向一个prototype对象所在的位置 | 每个函数都有该属性,这个属性中保存的是引用,而不是具体的对象 | 无 |
prototype对象 | 对象的用途是包含可以由特定类型的所有实例共享的属性和方法。 | 该对象的 __proto____属性指向了Object的原型 | 无 |
___proto____ | 实例的属性,指向实例的原型对象 | 保存的也是对象的引用 | 无 |
ecma262/#constructor
function Parent(){ this.name = 'parent';}var a = new Parent();console.log(Parent.prototype);console.log(Parent.constructor);console.log(Parent.prototype.constructor);console.log(a.prototype);console.log(a.__proto__);console.log(a.constructor);
对象 | 取值 |
---|---|
Parent的prototype对象 | 一个具备constructor属性的Object(图:prototype 1-1 ) |
Parent.prototype属性 | Parent的prototype对象的引用 |
Parent.constructor | ? Function() { [native code] } |
Parent.prototype.constructor | ? Parent(){this.name = ‘parent’;} |
a.prototype | undefined |
a.__proto____ | 与Parent.prototype相同 |
a.constructor | ? Parent(){this.name = ‘parent’;} |
prototype 1-1 prototypeimg.png
new具体的过程
new Parent() = { var obj = {}; obj.__proto__ = Parent.prototype; // 此时便建立了obj对象的原型链: // obj->Parent.prototype->Object.prototype->null var result = Person.call(obj); // 相当于obj.Person("John") return typeof result === 'object' ? result : obj; // 假如无返回值或者者返回一个非对象值,则将obj返回作为新对象}
alexzhong22c js-new-happen
Object.getPrototypeOf
var o = new C();
//o是C的实例,所以
Object.getPrototypeOf(o) === C.prototype
Object.getPrototypeOf 返回的是实例对象的原型
由于Object是构造函数
Object.getPrototypeOf(Object) 得到的是// f(){[native code]}
Object.getPrototypeOf( Object ) === Function.prototype; // true
由于把Object看作对象,Object是个函数
所以Object.getPrototypeOf( Object )返回的就是函数对象的原型Function.prototype
Object.prototype是构造出来的对象的原型。
function prototype relationship
Function prototype reference
说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » js prototype、constructor、__proto__、new详解
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » js prototype、constructor、__proto__、new详解