Javascript知识汇总------获取构造函数名的方法和字符串处理方法

Posted iwzyuan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Javascript知识汇总------获取构造函数名的方法和字符串处理方法相关的知识,希望对你有一定的参考价值。

 

一、构造函数名称获取

 

每一个对象都有constructor属性
每一个对象的constructor 属性描述的是其构造函数
function Fn(){}
var obj = new Fn();
console.log( obj.constructor === Fn ); // true  对象的constructor属性描述的就是其构造函数

下面代码所用的obj对象就是在此处创建的

1. 利用字符串截取获取构造函数名称

//利用字符串截取获取
var str = ‘‘+obj.constructor;
var str1 = str.replace(function,|);//先将function字符用 | 代替,方便截取
var startIndex = str1.indexOf(|); //找到字符串截取开始索引
var endIndex = str1.indexOf(();  //找到字符串截取结尾索引
if( startIndex != -1 && endIndex != -1 ){
    var name = str1.slice( startIndex+2,endIndex );
    console.log(name);
}

2. 利用正则表达式获取构造函数名称

//利用正则表达式获取
var reg = /function (.+)\(/;
var name1 = reg.exec(str);
console.log(name1);

3.利用对象name属性获取构造函数名称

//用name属性获取constructor
console.log(obj.constructor.name);//ie8以下不支持

 

 综合上面3种方法,ie8以下浏览器只能使用字符串截取已经正则表达式方法获得,而高级浏览器则3种方法都行,故需要对浏览器进行性能检测后做出兼容

 

//兼容所有浏览器获得构造函数名称
function getFnName(fn){
    /*
    if(typeof fn !== ‘function‘) return;
    return fn.name ?
            fn.name:
            /function (.+)\(/.exec(fn + ‘‘)[1];
    */  

    /*
    if(typeof fn !== ‘function‘) return;
    return fn.name ||
            /function (.+)\(/.exec(fn + ‘‘)[1];
    */
    
    
    return typeof fn !== ‘function‘?
                            undefined:
                                fn.name ||
                                /function (.+)\(/.exec(fn + ‘‘)[1];
}
function PersonWu(){}
var obj2 = new PersonWu();
var name = getFnName(obj2.constructor);
console.log(name);//PersonWu

二、字符串方法

var string = ‘123abc456‘;
var i = 3; 
//substring(startIndex,length) == substr  用法相同
console.log(string.substring(0,i));//123  若传两个参数表示从左边开始从索引值0开始提取前i个字符
console.log(string.substring(i));  //456  若传一个参数代表从左边开始第i个截取至最右侧
//slice(startIndex,enIndex)
console.log(string.slice(0,i))  //包左不包右,-1代表右侧第一位
//string.replace(regexp/substr,replacement)
 

以上是关于Javascript知识汇总------获取构造函数名的方法和字符串处理方法的主要内容,如果未能解决你的问题,请参考以下文章

HTML 学习笔记 JavaScript (Math和Number对象)

牛客网刷题知识汇总2

JavaScript要点汇总——The Most Important

JavaScript面向对象精要

JavaScript -- 知识点汇总

web前端面试题JavaScript第一弹,个人整理部分面试题汇总