美文网首页
神奇的toString ()

神奇的toString ()

作者: lokiio | 来源:发表于2019-04-24 14:41 被阅读0次

学习函数柯里化的时候看到这样一段代码:

//原来的代码不是这样,这里简化了一下,意思大概就是这样的
    var fn = function(){
       return [1,2,3];
    } 
    fn.toString = function(){
      return '一段字符串';
    })
    
    console.log(fn);//输出:    一段字符串    ???

这里很是疑惑,我们知道,正常情况下,定义一个函数,然后打印它是输出函数体本身,如下:

var fn=function(){
  return [1,2,3]
};
console.log(fn);//输出:ƒ (){ return [1,2,3]}
console.log(fn.toString); //输出:ƒ toString() { [native code] }

然后去查了下,原来在上一段代码中,我们重写了fn.toString,给它定义的一个新的方法;
而在js中,对一个function/object这种执行console.log,输出的就是调用toString(或者valueOf)后的结果,
也就是说,在执行console.log的时候会默认调用对象的toString方法,所以输出的就是toString上面新的方法的结果;
详细可参考:
toString()和valueOf():https://www.2cto.com/kf/201706/648822.html

柯里化:
https://segmentfault.com/a/1190000008610969
https://segmentfault.com/a/1190000016160081

相关文章

网友评论

      本文标题:神奇的toString ()

      本文链接:https://www.haomeiwen.com/subject/awkggqtx.html