【发布时间】:2014-09-01 00:14:30
【问题描述】:
我正在编写一个抓取和数据输入程序,以节省我妈妈和她的同事数小时的时间,让他们费时费力地重复提交表单。一切都很顺利,直到我在提交按钮上调用了这个 onclick 函数。该函数(出于安全目的我们将其称为 dataLogger() )将单个输入字段条目作为参数,然后......我不知道......因为它引用了一个本质上调用它的父构造函数的函数.. . 像这样(换出函数名):
dataLogger(data) {
if (parent)
if (typeof(parent.dataLoggerP) == 'function')
parent.dataLoggerP(data);
所以我在这个函数处设置了一个断点,并在 firebug 中检查了“dataLogger”对象。我想我只需查看原型节点的子节点,查看父节点的“dataLoggerP”函数,搜索该函数定义,然后解决我的问题。但是发生了一件有趣的事情。我会在 Watch Expressions 中单击 firebug 中的 prototype: 节点,并在其中看到两个节点:constructor: dataLogger(data) 和 __proto__:。我打开constructor: dataLogger(data) 节点却发现它是原始dataLogger 对象的副本!在那个里面,还有另一个……还有另一个……无穷无尽。这就像一幅 mc escher 的画……
我不知道发生了什么,也不知道它是如何工作的......非常感谢任何对此的见解......
【问题讨论】:
-
另外,我刚刚在手表表达式中添加了
parent,找不到像这个函数应该调用的dataLoggerP(data)对象,只有dataLogger(data)(没有“P”最后)再次将自身原型化为无穷大的对象!
标签: javascript object inheritance prototype