确定实例与原型之间的关系

可以使用两种方式确定实例与原型之间的关系:
1. instanceof操作符
2. isPrototypeOf()方法

先来一段代码:

function SuperType(){ 
this.property = true; 
}

//在SuperType函数的原型链上创建实例共享方法 
SuperType.prototype.getSuperValue = function(){ 
return this.property; 
};

function SubType(){ 
this.subProperty = false; 
}

//继承了SuperType 
SubType.prototype = new SuperType();

SubType.prototype.getSubValue = function(){ 
return this.subProperty; 
}

var instance = new SubType(); 
alert(instance.getSuperValue()); //true;

1. instanceof操作符
用这个操作符来测试实例与原型链中出现过的构造函数,如果有,就会返回true。或者说判断一个对象是不是另一个对象的实例。

a instanceof b; 如果a是b的实例就返回true
基于如上代码:

  //instance 是Object的实例吗?
    alert(instance instanceof Object);    //true;

//instance 是SuperType的实例吗?

   alert(instance instanceof SuperType);    //true;
   alert(instance instanceof SubType);    //true;

2. isPrototypeOf()方法
只要是原型链上出现过的原型,都可以说是该原型链所派生的实例的原型,因此 isPrototypeOf()也会返回true。

//Object的原型在派生instance实例的原型链上?是的话就是instance实例的原型,返回true
alert(Object.prototype. isPrototypeOf(instance));  //true
//SuperType的原型在派生instance实例的原型链上吗?是的话就是instance实例的原型,返回true
alert(SuperType.prototype. isPrototypeOf(instance));  //true
//SubType的原型在派生instance实例的原型链上吗?是的话就是instance实例的原型,返回true
alert(SubType.prototype. isPrototypeOf(instance));  //true
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值