首页 > 技术文章 > js-prototype

zhangxiaoqiong 2020-09-17 14:07 原文

A:原型
B:无论什么时候只要创建一个新函数,就会根据一组特定的规则为该函数创建一个prototype属性,这个属性指向函数的原型对象。默认情况下,所有原型对象都会自动获得一个constructor属性,这个属性指向prototype属性所在函数的指针。当调用构造函数创建一个新的实例后,该实例的内部将包含一个指针__proto__指向构造函数的原型对象。
 
A:原型链
B:每当代码读取某个对象的某个属性时,都会执行一次搜索,目标是具有给定名字的属性。搜索首先从对象实例本身开始。如果在实例中找到了具有给定名字的属性,则返回该属性的值;如果没找到则继续搜索指针指向的原型对象,在原型对象中查找具有给定名字的属性。如果原型对象中找到了这个属性,则返回该属性的值。如此层层递进,就构成了实例与原型的链条。就是所谓的原型链。
function obj() {}
let _obj = new obj();

/** 
1.无论什么时候只要创建一个新函数,就会根据一组特定的规则为该函数创建一个prototype属性,这个属性指向函数的原型对象。

obj.prototype
2.默认情况下,所有原型对象都会自动获得一个constructor属性,这个属性指向prototype属性所在函数的指针。

obj.prototype.constructor指向prototype所在函数的指针【obj()】

3.当调用构造函数创建一个新的实例后,该实例的内部将包含一个指针__proto__指向构造函数的原型对象。

_obj.__proto__指向构造函数obj.prototype *
*/

 

 

推荐阅读