JavaScript的知识总结(5)

简介: JavaScript的知识总结(4)

二、类:  

    1、标准转换方法:

         toString() toLocaleString() 这两个方法一般可以通用,将会对象转为字符串;

     valueOf() : 用来将对象转为原始值;当有比较运算符出现时,左右操作数会首先调用此方法; 大多数对象没有这个,Date是有的;

            toJSON() : 这个方法由JSON.stringify() 自动调用的;当对一个对象执行序列号化操作时,它会忽略对象的原型和构造函数;如果有一个对象定义了toJSON()方法,JSON.stringify()会直接调用这个方法;Date的toJSON()方法时返回一个表示日期的字符串;  反向方法:JSON.parse(); 

三、正则表达式:

        1、有特殊含义的标点符号有: ^ $ . * + ? = ! : | \ / ( ) [ ] { }  如果需要使用本身,则必须使用前缀\ 

        2、模式匹配的String方法:search() replace() match() split()

    1、search() : 放回第一个与之匹配的子串的起始位置,如果找不到,返回-1;

     console.log('javascript'.search('script')); //4
     console.log('javascript'.search(/script/)); //4

              如果search()的参数不是正则表达式,则会自动转换;search()不支持全局检索,参数会忽略修饰符g

     2、replace() : 用于执行检索和替换操作;第一个参数是一个正则,第二个参数是要进行替换的字符串;

     和search()不同,如果第一个参数是字符串,不会转正则,直接搜索此字符串。

           3、match() : 用于获取匹配到的字符串;一个参数就是一个正则表达式,返回一个有匹配结果组成的数组;

       执行全局检索返回数组包含字符串中所以匹配结果,没有设置修饰符g,也返回一个数组,数组的第一个元素就是匹配的字符串;

     console.log('ni shi 1 tashi 2 shuishi 3'.match(/\d+/g));  //["1", "2", "3"]
     console.log('ni shi 1 tashi 2 shuishi 3'.match(/\d+/));    //["1", index: 7, input: "ni shi 1 tashi 2 shuishi 3"]

     如果正则里面有圆括号且没有修饰符g,则返回的数组第一个元素就是匹配的字符串,余下的元素则是正则用圆括号括起来的子表达式;

      var url = /(\w+)://([\w.]+)/(\S*)/;
      var text = 'http://www.baidu.com/_sa tai che lw';
      console.log(text.match(url)); // ["http://www.baidu.com/_sa", "http", "www.baidu.com", "_sa", index: 0, input: "http://www.baidu.com/_sa tai che lw"]

            4、split() : 使用指定分隔符拆分字符串组成数组; 其参数可以是一个字符串,也可以是一个正则;

  4、RegExp对象:RegExp的构造函数有两个参数,第一个是正则主体,第二个是修饰符,只能传入g i m ,此参数是可选的; 构造函数主要用于动态创建正则;

    每个RegExp对象都包含五个属性和两个方法:exec() 和 test();两个方法是等价的,只是返回值不同, 当检索到时,exec返回数组,test返回true;

         exec()与String的match()方法的参数没有修饰符g时是相似的;不同的是exec可以多次调用返回不同结果;如下:

    var pattern = /Java/g;
    var text = 'JavaS is not JavaSp!';
    console.log(pattern.exec(text));  // ["Java", index: 0, input: "JavaS is not JavaSp!"]
    console.log(pattern.test(text));  // true

    var pattern = /Java/g;
    var text = 'JavaS is not JavaSp!';
    var ret ;
    while((ret = pattern.exec(text)) !=null){
      console.log(ret);
    }

    //输出

    ["Java", index: 0, input: "JavaS is not JavaSp!"]
    ["Java", index: 13, input: "JavaS is not JavaSp!"]

   测试发现:执行了test()等于执行了exec();

相关文章
|
JavaScript 前端开发 API
JavaScript数组API总结
JavaScript数组API总结
JavaScript数组API总结
|
JavaScript 前端开发
JavaScript总结:typeof与instanceof的区别,及Object.prototype.toString()方法
JavaScript总结:typeof与instanceof的区别,及Object.prototype.toString()方法
162 0
JavaScript总结:typeof与instanceof的区别,及Object.prototype.toString()方法
|
JavaScript 前端开发
JavaScript总结:let变量(弥补var的缺陷)
JavaScript总结:let变量(弥补var的缺陷)
122 0
JavaScript总结:let变量(弥补var的缺陷)
|
JavaScript 前端开发
JavaScript总结: javascript中使用var定义变量的变量提升问题
JavaScript总结: javascript中使用var定义变量的变量提升问题
107 0
JavaScript总结: javascript中使用var定义变量的变量提升问题
|
存储 前端开发 JavaScript
JavaScript总结:关于堆栈、队列中push()、pop()、shift()、unshift()使用方法的理解
JavaScript总结:关于堆栈、队列中push()、pop()、shift()、unshift()使用方法的理解
209 0
JavaScript总结:关于堆栈、队列中push()、pop()、shift()、unshift()使用方法的理解
|
JavaScript 前端开发 内存技术
JS入门到进阶知识总结(四)
JS入门到进阶知识总结(四)
JS入门到进阶知识总结(四)
|
JavaScript 前端开发 程序员
|
XML 移动开发 JavaScript
JS入门到进阶知识总结(二)
JS入门到进阶知识总结(二)
JS入门到进阶知识总结(二)
|
存储 JavaScript 前端开发
|
JavaScript
js之call() apply() bind() $proxy()的总结
由以上代码可以总结出: 1. foo.call()与foo.apply()原理是一样的,将foo函数的this指向指定的对象(或者表述为在指定对象的上下文环境中运行foo函数); 2. bind(obj)与$proxy(obj)不同的是他们返回的是一个新的函数,该函数的this执行指定的对象obj。
129 0
js之call() apply() bind() $proxy()的总结