现有以下案例:
加载后得到以下结果:
以下代码的用途比较迷惑:
如果给函数添加toString方法,则可打印f 1,如果不添加打印函数代码体,在这里函数的toString方法起到什么作用呢?还望各位朋友可以帮助解答
这是函数柯里化的一种固定写法,类似传统编程的循环。
http://www.cnblogs.com/zztt/p/4142891.html
重写foo这个对象默认toString方法,否则foo是函数,log时默认toString返回函数体,重写后就返回指定的值
这里涉及3个知识
1.函数柯里化
楼上的朋友已经指出了
2.toString
从对象上看foo在定义toString前,它本身是没有toString方法的,那么直接输出一个对象默认会调用它的toString方法,它本身没有但要访问这个本身不存在的属性将去Function.prototype上找
(这里涉及原型链)
3.toString起到一个输出字符串的作用,这里的console.log(foo)就是代表输出foo的toString字符串化形式
补充2.所以他这里定义了foo自身的toString属性,他将不会再去沿着原型链找,相当于面向对象里的重写(覆盖?屏蔽?)