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
 
 
 
 
 
原文地址:https://www.cnblogs.com/Renyi-Fan/p/9651601.html