ES6函数名称总结

作者: 坤少卡卡 | 来源:发表于2018-05-11 15:23 被阅读0次

    当对一个函数递归或者栈追踪的时候,就会觉得函数名称是多么的重要。否则满屏的anonymous分分钟想打人。今天阅读《你不知道的JavaScript》(下卷)的时候,发现作者有对name进行总结,于是在这里记录一下,以便加深记忆,日后查阅。

    下面是ES6中名称推导的其他几种形式:

    (function(){});   // name: ""(空字符串)
    (function*(){});   // name: ""
    window.foo = function(){};   // name: ""
    
    class Awesome {
        constructor() {}   // name: Awesome
        funny() {}   // name: funny
    }
    
    var c = class Aewsome {};   // name: Aewsome
    
    var o = {
        foo() {},   // name: foo
        *bar() {},   // name: bar
        baz: () => {},   // name: baz 
        bam: function(){},   // name: bam
        get qux() {},   // name: get qux
        set fuz() {},   // name: set fuz
        ["b" + "iz"]: function(){},   // name: biz
        [Symbol("buz")]: function(){}    // name: [buz]
    };
    
    var x = o.foo.bind(o);   // name: bound foo
    (function(){}).bind(o);   // name: bound
    
    export default function() {};   // name: default
    
    var y = new Function();   // name: anonymous
    
    

    默认情况下,name属性不可写,但是可以配置。如果需要,可使用Object.defineProperty()手动修改。

    相关文章

      网友评论

        本文标题:ES6函数名称总结

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