深入理解js原型与原型链

来源:互联网 发布:宝山行知外国语学校 编辑:程序博客网 时间:2024/05/17 22:39

1.构造函数

构造函数用来实例化对象时对对象进行初始化。每个构造函数都具有一个不可枚举的prototype属性,也叫做原型。而原型具有一个constructor属性指向构造函数。
不论是构造函数还是原型,都是对象。
var a=new A();
A为构造函数,a为实例,A.prototype为原型对象,A.prototype.constructor为原型对象的一个属性等于A
A.prototype.constructor===A


2.对象

对象分为普通对象和函数(function)
function F(); //可以理解为new F()
F.protype.constructor===F;


3.原型链

3.1new实例的原型链

每个用new创建的实例都具有一个__proto__属性,指向构造函数的prototype
Function Fun(){}
var fun = new Fun();
fun.__proto__ ==== Fun.prototype //两者相等
上面说到原型也是一个对象,那原型是谁的对象呢,答案是Object
所以:Function.prototype.__proto__===Object.prototype
而Object不是任何人的实例所以:Object.__protot__=null


3.2函数对象的原型链

function Fun(){}
所有函数对象都是函数Funtion的实例,包括自己,因为自己也是个函数
Fun.__proto__===Function.prototype
Array.__proto__===Function.prototype
String.__proto__===Function.prototype
Function.__proto__===Function.prototype
而原型对象为Object的实例
=>Function.prototype.__proto__===Object.prototype


4.instanceof运算符

a instanceof b //如果能在原型链中遍历到,则返回true
原创粉丝点击