zoukankan      html  css  js  c++  java
  • javascript中如何获取对象名

    javascript中如何获取对象名

    一、总结

    一句话总结:将对象传入参数,看参数是否为函数(js中的对象和函数是一个意思么(函数肯定是对象)),对象参数.name属性即可获得

    //版本4
    function getName(fun){
        return typeof fun==='function'?
            undefined:
            fun.name||/function (.+)(/.exec(fun + '')[1];
    }
    //调用
    function Person(){}
    var ps = new Person();
    getName(ps.constractor);    //通过获取到constractor从而获取到构造函数

    二、JavaScript中获取到对象名

    我们经常要判断用户传递进来的对象名是不是合法的,那么我们就需要获取到该对象的对象名,在chrome有提供直接获取到对象名的方法,而在ie中就需要正则或者字符串切割,这么使用正则

    //版本1
    function getName(fun){
        if(typeof fun !== 'function')return;
        if(fun.name){
            return fun.name;
        }else{
            return /function (.+)(/.exec(fun+'')[1];
        }
    }
    
    //版本2
    function getName(fun){
        if(typeof fun !== 'function') return;
        return fun.name?fun.name:/function (.+)(/.exec(fun+'')[1];
    }
    
    //版本3
    function getName(fun){
        if(typeof fun!== 'function') return;
        return fun.name||/function (.+)(/exec(fun + '')[1];
    }
    
    //版本4
    function getName(fun){
        return typeof fun==='function'?
            undefined:
            fun.name||/function (.+)(/.exec(fun + '')[1];
    }
    //调用
    function Person(){}
    var ps = new Person();
    getName(ps.constractor);    //通过获取到constractor从而获取到构造函数
    

    //很多框架中比较喜欢用版本4

     
    参考:JavaScript中获取到对象名 - CSDN博客
    https://blog.csdn.net/qq_25956141/article/details/79156709
     
     
     
     
     
  • 相关阅读:
    【LOJ】#2888. 「APIO2015」巴邻旁之桥 Palembang Bridges
    【AtCoder】ARC099题解
    【LOJ】#2265. 「CTSC2017」最长上升子序列
    【LOJ】#2264. 「CTSC2017」吉夫特
    【AtCoder】AGC028 (A-E)题解
    【AtCoder】ARC100 题解
    【AtCoder】ARC101题解
    【AtCoder】AGC026 题解
    【LOJ】 #2308. 「APIO2017」商旅
    【BZOJ】3456: 城市规划(多项式求ln)
  • 原文地址:https://www.cnblogs.com/Renyi-Fan/p/9651601.html
Copyright © 2011-2022 走看看