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)

原文地址:https://www.cnblogs.com/iwzyuan/p/8707739.html

时间: 2024-08-18 09:12:55

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

Appium Android 获取包名和 Activity 的几种方法 (转)

本文档主要记录"获取包名和 Activity 的方法",用于自动化测试时启动APP.以下方法主要来源于网络和社区同学的贡献,特此感谢! 1. 方法一: pm list package查看包名 adb shell pm list package -f 将获取手机内所有apk对应的包名和路径 adb shell pm list package -3 -f #获取第三方apk的包 2. 方法二:dumpsys window(本人最常用) 先打开需要查找的apk后,再敲入以上命令 adb sh

js正则表达式test方法、exec方法与字符串search方法区别

1.正则表达式test方法 test() 方法用于检测一个字符串是否匹配某个模式 返回值: 如果字符串 string 中含有与 RegExpObject 匹配的文本,则返回 true,否则返回 false. 2.正则表达式exec方法 exec() 方法用于检索字符串中的正则表达式的匹配. 返回值:返回一个数组,其中存放匹配的结果.如果未找到匹配,则返回值为 null. 3.字符串search方法 search() 方法用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串. 返回值

C# 通过反射执行已存在于类中的方法 通过字符串执行方法

通过字符串执行方法,在可能会调用不同方法时对不同方法进行调用 以下为实例: 1 public class ABC 2 { 3 string str = "通过反射执行的方法"; 4 //Class:要反射的Method所在类名 5 Type type = typeof(Class); 6 //funcName:进行反射的方法名称,第二个参数指定方法的搜索范围,当前为搜索private的方法,没有第二个参数则为public的方法 7 MethodInfo mt = type.GetMet

JavaScript or jQuery 获取option value值 以及文本内容的方法

1.html <div class="form-group"> <label>保险公司</label> <select class="form-control" id="testSelect"> <option value="平安">平安保险</option> <option value="太平洋">太平洋保险</op

Javascript知识汇总------面向对象手写弹窗插件

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" con

Javascript知识汇总------手写jq轮播图插件(2018-04-23 17:16)

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" con

javaScript知识体系(中)- DOM、BOM、其它内置对象

1. DOM基本概念 1.1 DOM DOM Document Object Model 文档对象模型     就是把HTML文档模型化,当作对象来处理     DOM提供的一系列属性和方法可以视作一个工具箱,极大地方便了我们对文档的处理. 1.2 内容概念 文档(Document):就是指HTML或者XML文件     节点(Node):HTML文档中的所有内容都可以称之为节点,常见的节点有         元素节点 属性节点 文本节点 注释节点     元素(Element)        

JavaScript正則表達式知识汇总

Js 正則表達式知识汇总 正則表達式: 1.什么是RegExp?RegExp是正則表達式的缩写.RegExp 对象用于规定在文本中检索的内容. 2.定义RegExp:var +变量名=new RegExp(); 3.RegExp 对象有 3 个方法: 1)test()检索字符串中的指定值,返回值是true或false. var p1=new Reg("e"); document.write(Reg.test("welcome to China!")); 2)exec

JavaScript正则表达式知识汇总

Js 正则表达式知识汇总 正则表达式: 1.什么是RegExp?RegExp是正则表达式的缩写.RegExp 对象用于规定在文本中检索的内容. 2.定义RegExp:var +变量名=new RegExp(); 3.RegExp 对象有 3 个方法: 1)test()检索字符串中的指定值,返回值是true或false. var p1=new Reg("e"); document.write(Reg.test("welcome to China!")); 2)exec