zoukankan      html  css  js  c++  java
  • 函数name属性

    在函数声明和函数命名表达式中都有name属性。很多资料中都说明函数声明和命名函数表达式中都已定义了name属性,对此我也深信不疑。今天做了一个小测试,发现在IE下函数的name属性一直都是未定义。

     1 function foo() {};//函数声明
     2 var bar = function(){};//函数表达式
     3 var baz = function baz(){};//命名表达式
     4 
     5 //Firefox,WebKit
     6 console.log(foo.name);//"foo"
     7 console.log(bar.name);//""
     8 console.log(baz.name);//"baz"
     9 
    10 //IE
    11 console.log(foo.name);//"undefined"
    12 console.log(bar.name);//"undefined"
    13 console.log(baz.name);//"undefined"

      在IE下获取函数名称可以使用toString()方法,然后使用正则表达式匹配:

    1 /**扩充函数原型,获取函数名*/
    2 Function.prototype.getSelfName = function() {
    3     return typeof this.name === "string" ? this.name : /function\s+([^\{\(\s]+)/.test(this.toString()) ? RegExp['$1'] : '[Unknown]';
    4};
  • 相关阅读:
    16-高级指针
    15-C语言结构体
    14-C语言宏
    13-C语言字符串函数库
    12-C语言字符串
    11-C语言指针
    10-C语言函数
    POJ 1001 高精度乘法
    POJ 1060 多项式乘法和除法取余
    POJ 1318 字典排序
  • 原文地址:https://www.cnblogs.com/wuzy/p/3009312.html
Copyright © 2011-2022 走看看