【问题标题】:Javascript unable to pass parameters into a property acting as a functionJavascript无法将参数传递给充当函数的属性
【发布时间】:2010-05-15 08:41:50
【问题描述】:

目前以简化形式,我的代码如下所示

function AddFileParam(file_id, name, value) {
    uploadcontrol.AddFileParam(file_id, name, value)
}

uploadcontrol = new Upload()

function Upload() {
    //logic
}
Upload.prototype.AddFileParam = function(file_id, name, value) {
    //logic
};

代码给了我一个错误,因为它指出 addFileParam 不是一个有效的函数。这是由函数upload(又名uploadcontrol)的实例引起的。这仅发生在 Firefox/Chrome 中,而不发生在 IE 中。有想法该怎么解决这个吗?

【问题讨论】:

  • 注意,AddFileParam,uploadcontrol = new Upload函数在不同的文件中
  • 您还有其他大小写不一致,是Upload 还是upload?您发布的代码会引发一些错误......需要准确的代码才能获得准确的答案。
  • 抱歉,已更新,不再出现错误...
  • 我没有收到您当前代码的任何错误:jsfiddle.net/dxGgX 这可能是外部的东西?

标签: javascript cross-browser


【解决方案1】:

如果全局AddFileParam() 函数在执行到达Upload.prototype.AddFileParam= ... 行之前被调用,那么Upload 原型还没有AddFileParam 方法。

JavaScript 从上到下执行。例外情况是,像function Upload() {...} 这样的函数声明语句被“提升”并在脚本的其余部分运行之前定义。但是,该构造函数后面的 Upload.prototype.member= 行没有被提升,而是以正常的脚本顺序运行。

虽然您可以避免在脚本中使用比其定义更早的函数,但对于构​​造函数来说这样做并不是一个好主意。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-03-24
    • 2011-10-02
    • 2016-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多