为了账号安全,请及时绑定邮箱和手机立即绑定

isPrototypeOf()方法的含义?

isPrototypeOf()方法的含义?

千万里不及你 2019-04-16 17:06:05
JavaScriptJavaScript高级程序设计148页这样描述指针[[prototype]]:当构造函数创建一个新实例后,该实例内部包含一个指针(内部属性),指向构造函数的原型.ECMA-262第五版管这个指针叫做[[prototype]].虽然在脚本中没有标准的方式访问它,但在Firefox,Safari,Chrome中提供了(__proto__).149页第一次出现,书中这样写道:虽然在所有实现中都无法访问[[prototype]],但可以通过isPrototypeOf()方法来确定对象之间是否存在这种关系.从本质上讲,如果[[prototype]]指向调用isPrototypeOf()方法的对象,那么这个方法就返回true那么看下面的代码JavaScriptfunctionSuperType(){this.property=true;}SuperType.prototype.getSuperValue=function(){returnthis;};functionSubType(){this.subproperty=false;}SubType.prototype=newSuperType();SubType.prototype.getSubValue=function(){returnthis.subproperty;};varinstance=newSubType();alert(SuperType.prototype.isPrototypeOf(instance));//truealert(instance.__proto__==SuperType.prototype)//false第一个alert为true按照149页描述的,那么instance是指向SuperType.prototype的,可是我们这样测试的时候却alert出的是false,又表示instance的[[prototype]]并不指向SuperType.prototype.这不矛盾吗?
查看完整描述

2 回答

?
梦里花落0921

TA贡献1772条经验 获得超6个赞

isPrototypeOf和proto不等价,那书上也说了,可以通过isPrototypeOf()方法来确定对象之间是否存在这种关系.
这个关系就是原型链的关系,isPrototypeOf是判断a是否存在于b的原型链这么一个关系,所以是这样
javascriptinstance.__proto__===SubType.prototype
instance.__proto__.isPrototypeOf(instance)
SubType.prototype.__proto__===SuperType.prototype
instance.__proto__.__proto__===SuperType.prototype
instance.__proto__.__proto__.isPrototypeOf(instance)
明白了么?这个原型链一直往上面,都在instance的原型链里,所以都是true。
                            
查看完整回答
反对 回复 2019-04-16
?
喵喵时光机

TA贡献1846条经验 获得超7个赞

当构造函数创建一个新实例后,该实例内部包含一个指针(内部属性),指向构造函数的原型
你通过
varinstance=newSubType();
创造了SubType的实例instance
instance.__proto__//SuperType{property:true,getSu...
instance//SubType{subproperty:false,property:true...
所以
instance.__proto__===SubType.prototype//true
instance.__proto__.__proto__===SuperType.prototype//true
这种想象叫做原型链。
举个例子:你去一个古老的山村家族找一个人,你先问孩子辈的人是否认识,可能他们太年轻,不认识;于是你去问他们的父母,是否认识,可能他们也不认识;然后你就要问他们的爷爷奶奶,是否认识。。。
js会顺着原型链向上寻找,会有两种结果:
-找到了,返回或修改
-没找到,返回undefined
                            
查看完整回答
反对 回复 2019-04-16
  • 2 回答
  • 0 关注
  • 425 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信