javascript中如何获取对象名
一、总结
一句话总结:将对象传入参数,看参数是否为函数(js中的对象和函数是一个意思么(函数肯定是对象)),对象参数.name属性即可获得
//版本4function 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中就需要正则或者字符串切割,这么使用正则
//版本1function getName(fun){ if(typeof fun !== 'function')return; if(fun.name){ return fun.name; }else{ return /function (.+)\(/.exec(fun+'')[1]; }}//版本2function getName(fun){ if(typeof fun !== 'function') return; return fun.name?fun.name:/function (.+)\(/.exec(fun+'')[1];}//版本3function getName(fun){ if(typeof fun!== 'function') return; return fun.name||/function (.+)\(/exec(fun + '')[1];}//版本4function getName(fun){ return typeof fun==='function'? undefined: fun.name||/function (.+)\(/.exec(fun + '')[1];}//调用function Person(){ }var ps = new Person();getName(ps.constractor); //通过获取到constractor从而获取到构造函数
//很多框架中比较喜欢用版本4