为了账号安全,请及时绑定邮箱和手机立即绑定

js 内置对象的属性为什么用 for in 访问不到

js 内置对象的属性为什么用 for in 访问不到

慕哥9229398 2019-04-08 04:04:34
js 内置对象的属性为什么用 for in 访问不到
查看完整描述

2 回答

?
牧羊人nacy

TA贡献1862条经验 获得超7个赞

for...in 循环只遍历可枚举的属性(包括自有属性和从原型链中继承的属性),属性是否可枚举由属性的enumerable值决定,内置方法全部都是不可枚举的
js代码中使用obj.prop = value/function(){} 方式添加的属性都是可枚举属性,若要添加不可枚举属性,可用如下方式:
var kxy = new Person();
Object.defineProperty(kxy, "sex", { value: "female", enumerable: false});
有两种方法可以查看内置对象的属性:
第一种利用getOwnPropertyNames,该函数返回所有自有属性(不包括继承的),不管是否可枚举
var props = Object.getOwnPropertyNames(String.prototype);
for(var i=0;i<props.length;i++){
console.log(props[i]);
}
第二种最简单:
console.log(String.prototype);
console.log(Array.prototype);
控制台显示的就是内置对象的所有属性了(String对象继承的属性都是从String.prototype来的)

查看完整回答
反对 回复 2019-04-09
?
MM们

TA贡献1886条经验 获得超2个赞

for in能用于所有的对象,包括数组,例如下面的代码显示document的所有属性: for (var i in document) document.write('document.'+i+' = '+document[i]); 输出内容如下(可能查看你的浏览器兼容性): document.namespaces = [object] documen

查看完整回答
反对 回复 2019-04-09
  • 2 回答
  • 0 关注
  • 550 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信