问答1 问答5 问答50 问答500 问答1000
网友互助专业问答平台

js原型链中的函数为什么可以用for in来遍历

提问网友 发布时间:2022-04-22 03:21
声明:本网页内容为用户发布,旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:1656858193@qq.com
3个回答
热心网友 回答时间:2022-04-22 12:24

1.原型链:

    当前对象a=new A()的原型(._proto_)是当前构造函数A.prototype.

    A.prototype又可能是另一个构造函数B的实例(new B()).

    new B()._proto_是当前构造函数B.prototype又可能是构造函数C的实例.

    如此向上找形成原型链.


2 for..in

    可以遍历可枚举属性(自有属性和继承属性).

    所谓继承属性就和原型链息息相关.

    如上a继承了构造函数A.prototype里的方法和属性.

    A.prototype又继承了B.prototype的方法和属性.

    B.prototype又继承了C.prototype的方法和属性.如此往复.

3.例子

function A(){this.a="a"}

function B(){this.b="b"}

B.prototype=new A();

var a=new B();

for(var k in a){console.log("属性"+k+": 值"+a[k])}

4.控制台


热心网友 回答时间:2022-04-22 13:42

Enumerable 特性

属性特性 enumerable 定义了对象的属性是否可以在 for...in 循环和 Object.keys() 中被枚举。

var o = {};
Object.defineProperty(o, "a", { value : 1, enumerable:true });
Object.defineProperty(o, "b", { value : 2, enumerable:false });
Object.defineProperty(o, "c", { value : 3 }); 
// enumerable defaults to false
o.d = 4; 
// 如果使用直接赋值的方式创建对象的属性,
// 则这个属性的enumerable为true
for (var i in o) {    
  console.log(i);  
}
// 打印 'a' 和 'd' (in undefined order)
Object.keys(o); // ["a", "d"]
o.propertyIsEnumerable('a'); // true
o.propertyIsEnumerable('b'); // false
o.propertyIsEnumerable('c'); // false

遍历至某属性时,如果值为undefined,则会沿原型链查找,如果找到该值并且enumerable为true,就会被遍历到

热心网友 回答时间:2022-04-22 15:17
因为原型连里面的任何东西,不管是属性还是函数,都是这个原型对象的属性

本文如未解决您的问题请添加抖音号:51dongshi(抖音搜索懂视),直接咨询即可。

相关推荐
  • JS中Object.defineProperty的用法介绍(代码示例)

    JS中Object.defineProperty的用法介绍(代码示例)

    JS中Object.defineProperty的用法介绍(代码示例):本篇文章给大家带来的内容是关于JS中Object.defineProperty的用法介绍(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。在 JavaScript 中,常通过下面方式,添加或修改对象的属性:obj.name = 'John&#3
    查看详情
  • forin方法遍历对象属性与优化嵌套循环

    forin方法遍历对象属性与优化嵌套循环

    forin方法遍历对象属性与优化嵌套循环:①for in 语句循环遍历 JavaScript 对象,每循环一次,都会取得对象的一个属性或方法。 语法: for(valueName in ObjectName){ // 代码块 } 其中,valueName 是变量名,保存着属性或方法的名称,每次循环,valueName 的值都会改变。 实例: va
    查看详情
  • Prototype使用指南之enumerable.js_prototype

    Prototype使用指南之enumerable.js_prototype

    Prototype使用指南之enumerable.js_prototype:Enumerable是一个抽象对象(需要说明的是,javascript中并没有类的概念,所指的类也就是一个函数,继承一般指的是一个对象(父)将它的方法属性copy(通过Object.extend, copy的是引用)到子类(函数)的prototype属性(一个对象)中) Enumerable
    查看详情
js中什么是原型对象和原型链 通过javascript执行链获取上下文对象 js链表怎么去输入啊 商业银行资本管理办法有哪些? js里怎么写链接 JS中的作用域链是在什么时候建立的 js作用域链是什么意思 怎么理解javascript原型链 谈谈对原型链的理解 JS原型链怎么理解 js链式调用怎么理解 js 链式调用如何做 深入分析JS原型链以及为什么不能在原型链上使 JS链接是什么意思 Win10正式版Guest来宾账户不见了怎么办 win10系统Guest怎么让它在开机登陆时不再显示 在Windows 10中如何启用或禁用来宾账户? win10中不小心登入来宾账户并禁用了管理员账户 W10取消GUEST登录一开机就GUEST登录啊怎么办 Win10来宾帐户默认是关闭的,怎么开启 新生儿疫苗保险必须交吗 JS代码超链接 JS 原型链继承和类继承各有什么优缺点 商业银行资本的构成 如何让js链接从同一窗口打开? 商业银行资本管理办法的介绍 js加超链接 商业银行资本管理的意义? 依据《商业银行资本管理办法》,我国监管资本的构... 商业银行资本管理办法 根据《商业银行资本充足率管理办法》规定,商业银... 有哪些简单好学的动物手工剪纸? 中班手工“十二生肖纸杯”怎么上 用卫生纸筒能做哪些手工 如何DIY手工贴纸制作方法图解 新年贺卡的手工做法 怎么做立体新年贺卡 如何制作手工贴纸? 小学墙面布置手工风格都会有哪些 苹果手机激活时间和购买时间不一样 有什么彻底清除蟑螂的办法? 根除蟑螂的方法有哪几种
Top