函数在传递给另一个函数后成为对象

时间:2012-03-09 19:03:03

标签: javascript lambda

我的代码很简单

var core ={
  f: function(obj){
    console.log(toString.call(obj));
  }
}

哪个应显示[object Function]如果我将其他功能传递给core.f(function(){})

如果我将core.f粘贴到Chrome检查器中,它也会这样做。
但如果[object Object]通过带{core.f的脚本加载,则该匿名函数将变为<script src> 1}}

1 个答案:

答案 0 :(得分:3)

如果您在控制台中进行测试,他们可能会有一个解析为toString的本地Object.prototype.toString

如果您不想要完整的原型路径,则应该创建自己的本地引用。


在Chrome中,我显示的是toString而不是window.toString ...

window.toString === toString; // false

toString引用成功解析为Object.prototype.toString ...

Object.prototype.toString === toString; // true

...所以你可以看到他们创建了自己的本地参考,它们会影响全局。