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};
  • 相关阅读:
    yii主题
    aptana studio 使用技巧整理
    big database url
    yii表单输入元素
    下载,和scp上传问题
    对缓存的思考——提高命中率
    php用户名密码
    openx -书表添加字段
    搜索
    python——常用模块2
  • 原文地址:https://www.cnblogs.com/wuzy/p/3009312.html
Copyright © 2011-2022 走看看