是不是有点匪夷所思,给函数添加方法?是的,JS中万物皆对象,别说给函数了,给字符串,给数字添加方法或者任何属性都是OK的,因为JS的对象就是键值对而已,你想添加就添加。举个例子:

    1. function s() {
    2. console.log("s");
    3. }
    4. s.len = 10
    5. s.go = () => {
    6. console.log('go');
    7. }
    8. s() // 输出s
    9. s.go() // 输出go
    10. console.log(s.len); // 10

    在JS中,一个函数不仅仅能被调用,如果你给他添加方法,你甚至能用 函数.方法名() 来调用一个完全不同的函数。
    字符串和数字自不用说,toString(),valueOf() 等内置方法,都是通过原型链继承过去的。现在我们知道了,即使不用原型链,你也可以临时的给某个变量添加任意属性,因为 JS万物皆对象(键值对)