并不是所有函数对象都有prototype。Function.prototype就没有prototype属性。
以下关于JavaScript的描述中错误的是
A
在原型上扩展的可枚举方法,会被for in循环出来
B
使用object.defineProperty可向对象添加或者修改属性
C
每个对象都有prototype属性,返回对象类型原型的引用
D
通过hasOwnProperty可判断一个对象以及其原型链上是否具有指定名称的属性
E
原型链是JS实现继承的一种模型
F
For循环是按顺序的,for in 循环是不一定按顺序的
正确答案:CD
for...in:遍历对象的每一个可枚举属性,包括原型链上面的可枚举属性;
Object.keys():只遍历自身的可枚举属性,不可以遍历原型链上的可枚举属性;
Object.getOwnPropertyNames():遍历自身所有属性(不论是否是可枚举的);不包括原型链
所有继承了 Object 的对象都会继承到 hasOwnProperty 方法。这个方法可以用来检测一个对象是否含有特定的自身属性;和 in 运算符不同,该方***忽略掉那些从原型链上继承到的属性。所以A对D错
B:应该是Object.defindeProperty是给对象添加或修改属性的方法,Object是js的内置对象,而object是一个变量名,这一点还是有区别的,题目不够严谨吧
C:创建的每一个函数都有一个prototype(原型)属性。浏览器实现的访问对象的[[prototype]]内部属性的方式是__proto__属性。
var obj = Object.create(null)
console.log(obj)
这个方式是以null为原型创建的对象,然而null并没有原型对象,所以这样创建出来的对象也没有原型对象,所以obj没有__proto__属性。
F:红宝书上说道“for-in循环出的属性名顺序是不可预测的,返回的先后次序会因浏览器而异”
每个对象都有prototype属性,返回对象类型原型的引用
这句话本身就是错的,对象有__proto__属性。prototype是函数才有的属性,对象没有
__EOF__

本文链接:https://www.cnblogs.com/longmo666/p/17825431.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)