javascript - 红宝书152页hasPrototypeProperty(object,name)错了吗?

查看:203
本文介绍了javascript - 红宝书152页hasPrototypeProperty(object,name)错了吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

function hasProtoproperty(object,name){
    return !object.hasOwnproperty(name) && (name in object);
}


红宝书P152说该函数能检测属性是在原型还是在实例中

true在原型中
false在实例中

但是,当原型和实例中都不存在某属性的时候也会返回false啊

解决方案

翻了一下书,函数没有错,但书中的解释确实容易引起误解。

看函数名就好了——hasPrototypeProperty(object, name)——原意是判断一个对象的原型上有无指定属性,只要原型上没有指定属性,就会返回 false。

我理解书中的解释是针对name这个属性说的,以对象有这个属性为前提,如果函数返回 false,那这个属性是在原型上。

这篇关于javascript - 红宝书152页hasPrototypeProperty(object,name)错了吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆