Javascript toString覆盖函数返回类型

时间:2015-06-09 17:23:09

标签: javascript

我是JavaScript编程语言的新手,目前正在学习闭包。我知道如果我们警告返回函数的函数,我们将看到返回函数的源代码:

function sum(a) {
  var sum = a
 function f(b) {
    sum += b
    return f
  }
  f.toString = function() { return sum }
  return f
}

var a=sum(2)(2)(2)(2); //why this sum function return sum
                       //instead of function f source code
alert(a);

在上面的代码中,为什么函数sum()返回内部范围变量sum而不是返回函数f源代码。 toString函数是否会覆盖函数sum()的返回类型?

1 个答案:

答案 0 :(得分:0)

alert(a)会调用a.toString()并显示其结果。

默认函数toString()Function.prototype.toString)返回函数的来源。

如果您用自己的toString()替换它,它将返回您的函数返回的任何内容。