js中的instanceof操作符的原理是什么?

wangchenggong1988 2012-10-24 03:28:42
学习js时,了解到在判断js中一个实例是否属于某一种类型时,可以使用instanceof操作符,比如function Person(){}
var person = new Person(); alert(person instanceof Person);//返回true

我想问的是,在执行instanceof这个操作时经过了怎样的判断,返回了true/false?

个人觉得是判断Person.prototype与person的内部指针[[prototype]]两者引用是否相同,不知道对不对,请教高手解答
...全文
708 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
yibey 2012-10-25
  • 打赏
  • 举报
回复
刚测试了下,现象是楼主说的那种情况,楼主的解释应该是正确的,多谢了
wangchenggong1988 2012-10-25
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]
我想直接判断 person.constructor == Person
[/Quote]

不是这样的。constructor不是实例具有属性,而是它原型对象中的属性,如果被篡改了,这个判断方法就不能正确返回了

你可以看看我最新的博文个,关于JavaScript的
yibey 2012-10-24
  • 打赏
  • 举报
回复
我想直接判断 person.constructor == Person
a8509190 2012-10-24
  • 打赏
  • 举报
回复
楼上说的很对!
wangchenggong1988 2012-10-24
  • 打赏
  • 举报
回复
能在实例的原型对象链中找到该构造函数的prototype属性所指向的原型对象,就返回true
over!

87,907

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧