我有以下情况:
我有一个js(父)类,它构造/创建另外两个类。父类附着到客户端(浏览器)上的窗口对象。我的问题是以下列方式的通话: window.parent.create({data: window.parent.utility.getId()})
在极少数情况下,比如200分之一或1000分之一,我会收到一个错误,说不能打电话 utility
未定义的!
这意味着 parent
类未定义!但如果它没有定义,它怎么会打电话给 window.parent.create()
?
什么可能允许 parent
在第一次调用中定义,然后在内部调用中使其未定义?
1条答案
按热度按时间des4xlb01#
但是,如果它没有定义,它是如何调用window.parent.create()的呢?
参数是在调用函数之前处理的(毕竟,程序需要知道函数的参数)。这就是它失败的原因
window.parent.utility.getId()
而不是window.parent.create()
这个.getId()
他跑在第一位。我敢打赌如果你换了
window.parent.utility.getId()
使用字符串文字,您将看到在.create()
打电话吧。正如下面bergi所指出的,编辑程序正在访问
window.parent.create
首先,谁会回来undefined
. 在处理参数并尝试将该值作为函数调用之前,该值并不重要。这个getId()
函数在此之前失败,这就是您看到此特定错误的原因。