浏览器控制台中的对象属性

时间:2017-07-19 00:33:18

标签: javascript json browser-console

每当我将任何 javascript对象记录到浏览器中时,我都希望通过扩展控制台窗口中的内容来探索它, 正如一个这样的例子是

console.log(console);

我确定发现里面是什么,但真正的查询现在开始, 当我展开对象时,它有一个名为 __ proto __ 的属性及其子属性,然后再次具有 contructor 的属性,并且循环继续,因为它具有 __ proto __ 再次等等。

结束了吗?

如果,此多次重复表示什么?

如果,为什么浏览器在打印这样的无限对象时没有挂起?

  • 非常感谢

谢谢&问候 Shohil Sethia

1 个答案:

答案 0 :(得分:0)

  

如果是,这多次重复表示什么?

Derek已经给你一个解释原型链的链接。

  

如果否,为什么浏览器不会挂起打印这样的无限对象?

netstat -ano | find ":80"是一项特殊财产,将以特殊方式处理。相反,我们举一个通用的例子:

__proto__

这将创建一个对象var a = { nest : function() { this.b = this; } } a.nest();,其具有指向主对象a本身的属性b

如果您执行a,您会看到与console.log(a)一样的行为。您可以继续展开属性__proto__ N次,它将始终显示具有属性b和方法b的对象。

在这种情况下,浏览器不会挂起,因为它只在一级属性上进行迭代。当您尝试扩展属性nest时,它将再次仅迭代1级子属性。它从不迭代嵌套属性,因此不会遇到任何问题。另一方面,如果您尝试使用b,它将给出关于循环引用的错误,因为要从对象生成字符串,它必须迭代所有嵌套属性。