B、C、D 都是错误的。
这里是小写的object而非Object,所以错误。
var obj = Object.create(null)
console.log(obj)
如果使用 chrome 浏览器控制台输入上面代码,可以看到打印了一个空对象,展开看到No Properties,而随便自己用字面量声明一个对象,都能看到proto属性。
所以,不是每个对象都有prototype属性。后面这句,严格来说是不是每个对象都会返回Object.prototype?,但实际应该是这个对象的原型的引用,加个“类型”是什么意思,所以这个选项考点到底是第一句话还是第二句话?
这个很明显,从该方法名称就能看出,所以是无法判断原型链上是否有的。在《你不知道的 JavaScript》(上卷) p119 也提到了这个:
相比之下, hasOwnProperty(..) 只会检查属性是否在myObject 对象中,不会检查[[Prototype]] 链。
都不敢相信网站的答案了。。。这两个到底是对的还是错的,求解答。
var obj = Object.create(null)console.log(obj)
关于F选项,昨天才复习的javascript语言精粹里说的,for in 遍历对象,无序遍历,而且会遍历原型,如果不想看到不要的属性,一定要if判断