关于原型链问题,望高手解答

原型链问题, 问题在最后一行

//定义方法
function foo(){}
//原型链赋值    
foo.prototype.z = 3

//定义一个新的对象
var obj=new foo()

obj.a  // 返回undefined
obj.z  // 返回3
obj.hasOwnProperty('z') //返回false
foo.hasOwnProperty('z') //返回false ????问题就在这, 这不是应该返回true么?

运行图如下:
图片描述

阅读 2.1k
3 个回答

zfoo.prototype 的属性,不是 foo 的属性。

foo 不是 foo.prototype

https://developer.mozilla.org...

所有继承了 Object 的对象都会继承到 hasOwnProperty 方法。这个方法可以用来检测一个对象是否含有特定的自身属性;和 in 运算符不同,该方法会忽略掉那些从原型链上继承到的属性。

并没有毛病啊,本来就是false,你在用hasOwnProperty有没有了解过这个函数是什么意思,为什么要是true呢

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏