JavaScript 原型和原型链

原型

无论什么时候,只要创建里一个函数,就会为该函数创建一个prototype属性,这个属性指向函数的原型对象;在prototype中会自动获得一个constructor属性,指向构造函数。
在这里插入图片描述
其中,person1为Person的一个实例。

-hasOwnProperty() :此方法可以用于检测一个属性是存在于实例中还是原型中。若来自实例则返回true
-in操作符: 只要通过对象就能访问到的属性,则返回true。
同时使用二者可以判断该属性是存在于对象中还是原型中。

原型链

原型链是实现继承的主要方法,基本思想是利用原型让一个引用类型去继承另一个引用类型的属性和方法,即将对象和原型连接起来构成了原型链。

function SuperType(){ 
 this.property = true; 
}
SuperType.prototype.getSuperValue = function(){ 
 return this.property; 
}; 
function SubType(){ 
 this.subproperty = false; 
} 

SubType.prototype = new SuperType();
SubType.prototype.getSubValue = function (){ 
 return this.subproperty; 
}; 
var instance = new SubType(); 
alert(instance.getSuperValue()); //true

在上述代码中,此句

SubType.prototype = new SuperType();

SubType继承了 SuperType,使SubType的原型不仅拥有SuperType实例所拥有的属性和方法,还有一个指向SuperType原型的指针
在这里插入图片描述
最终,instance 的原型指向 SubType 的原型,SubType 的原型指向 SuperType 的原型;因此,当执行 instance.getSuperValue() 语句时,会一环一环的向前搜索实例,直到找到原型链末端才会停下来。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值