欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

JavaScript中如何获取到对象名?

程序员文章站 2022-06-21 08:25:18
我们经常要判断用户传递进来的对象名是不是合法的,那么我们就需要获取到该对象的对象名,在chrome有提供直接获取到对象名的方法,而在ie中就需要正则或者字符串切割,这么使用正则...

我们经常要判断用户传递进来的对象名是不是合法的,那么我们就需要获取到该对象的对象名,在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