《JavaScript高级程序设计(第3版)》读书笔记6

233 阅读4分钟

第5 章 引用类型(接上篇)

一、基本包装类型

借助基本包装类型可以使基本类型值可以被当作对象来访问,三种基本包装类型分别是:Boolean、Number 和 String。具有如下特征:

  • 每个包装类型都映射到同名的基本类型;
  • 在读取模式下访问基本类型值时,就会创建对应的基本包装类型的一个对象,从而方便了数据操作;
  • 操作基本类型值的语句一经执行完毕,就会立即销毁新创建的包装对象。

二、String

1、字符访问方法
  • charAt():返回给定位置的字符
  • charCodeAt():返回给定位置的字符编码
var stringValue = "hello world";
alert(stringValue.charAt(1)); //"e"
alert(stringValue.charCodeAt(1)); //输出"101"
alert(stringValue[1]); //"e"(方括号加数字索引)
2、字符操作方法
  • concat():将一或多个字符串拼接起来,返回拼接得到的新字符串;原字符串不变;

以下3个,基于字符串创建新子字符串并返回。两个参数:指定子字符串的开始位置,指定子字符串到哪里结束;如果第二个参数为空,则将字符串的长度作为结束位置。3个方法对原字符串不变。

  • slice():第二个参数指定的是子字符串最后一个字符后面的位置;如果参数为负,将传入的负值与字符串的长度相加;
  • substring():第二个参数指定的是子字符串最后一个字符后面的位置;如果参数为负,会把所有负值参数都转换为 0;
  • substr():第二个参数指定的是返回的字符个数;如果参数为负,将负的第一个参数加上字符串的长度,而将负的第二个参数转换为 0;
var stringValue = "hello world";
alert(stringValue.slice(-3)); //"rld"
alert(stringValue.substring(-3)); //"hello world"
alert(stringValue.substr(-3)); //"rld"

alert(stringValue.slice(3, -4)); //"lo w"
alert(stringValue.substring(3, -4)); //"hel"
alert(stringValue.substr(3, -4)); //""(空字符串)
3、字符串位置方法
  • indexOf():从字符串的开头向后搜索子字符串;
  • lastIndexOf():从字符串的末尾向前搜索子字符串;
4、其他
  • trim():创建一个字符串的副本,删除前置及后缀的所有空格,然后返回结果;原字符串不变;
  • toLowerCase()、、toUpperCase():大小写转换;
  • match():接受一个参数,要么是正则表达式,要么是RegExp 对象;返回了一个数组;
  • search():接受一个参数,要么是正则表达式,要么是RegExp 对象;返回字符串中第一个匹配项的索引;如果没有找到匹配项,则返回-1;
  • replace():替换,两个参数:RegExp 对象或者字符串,字符串或者函数;
var text = "cat, bat, sat, fat";

var result = text.replace("at", "ond");
alert(result); //"cond, bat, sat, fat"

result = text.replace(/at/g, "ond");
alert(result); //"cond, bond, sond, fond"

三、内置对象Global

Global是一个全局对象,所有在全局作用域中定义的属性和函数,都是 Global对象就是 对象的属性,如 isNaN()、isFinite()、parseInt()以及 parseFloat()都是Global的方法。

在web浏览器中Global对象就是window,在全局作用域中声明的所有变量和函数,就都成为了 window对象的属性。

1、URI 编码、解码方法
  • encodeURI():对整个 URI进行编码,不会对本身属于 URI 的特殊字符进行编码,例如冒号、正斜杠、问号和井字号,只有空格被替换成了%20;
  • encodeURIComponent():对 URI 中的某一段进行编码,会使用对应的编码替换所有非字母数字字符;
    var uri = "http://www.wrox.com/illegal value.htm#start";
    //"http://www.wrox.com/illegal%20value.htm#start" 
    alert(encodeURI(uri));
    //"http%3A%2F%2Fwww.wrox.com%2Fillegal%20value.htm%23start" 
    alert(encodeURIComponent(uri));
  • decodeURI():只能对使用 encodeURI()替换的字符进行解码。例如,可将%20 替换成一个空格,
  • decodeURIComponent():可以解码任何特殊字符的编码
    var uri = "http%3A%2F%2Fwww.wrox.com%2Fillegal%20value.htm%23start";
    //http%3A%2F%2Fwww.wrox.com%2Fillegal value.htm%23start 
    alert(decodeURI(uri));
    //http://www.wrox.com/illegal value.htm#start 
    alert(decodeURIComponent(uri));
2、eval()

eval()方法像是一个完整的 ECMAScript 解析器,只接受一个参数,即要执行的 ECMAScript字符串。

eval("alert('hi')");
// 等价于
alert("hi");

四、内置对象Math

1、min()和 max()
2、舍入方法
  • Math.ceil():执行向上舍入,即它总是将数值向上舍入为最接近的整数;
  • Math.floor():执行向下舍入,即它总是将数值向下舍入为最接近的整数;
  • Math.round():执行标准舍入,即它总是将数值四舍五入为最接近的整数;
3、random()

Math.random()方法返回大于等于 0 小于 1 的一个随机数