js高级教程 第五章-引用类型(5.6||)

Boolean类型

  • 语法
var booleanObject = new Boolean(true);

可以传入参数true或者false

  • 关于js中引用类型的布尔表达式造成的误解
var bo = new Boolean(false);
var result = bo && true;
alert(result);//true

可以看到结果为true。因为,在js中布尔表达式的对象会被转换为true。

  • 基本类型和引用类型的布尔值的区别
    1.typeof操作符对于基本类型返回boolean,对于引用类型返回Object。
    2.instanceof操作符对于对象返回true,对于基本类型返回false。
var bo1 = true;
var bo2 = new Boolean();
alert(typeof bo1); //boolean
alert(typeof bo2); //object
alert(bo1 instanceof Boolean);//false
alert(bo2 instanceof Boolean);//true

Number类型

  • 语法
var numberObject = new Number();

Number类型重写了valueOf()、toLocalString()和toString()方法,分别返回基本类型的数值,字符串形式的数值。

一个有趣的玩法,通过给toString()方法传递参数,可以得到这是几进制数。

var num =19;
alert(num.toString(2));//10011

此外还提供了toFixed()方法来格式化字符串数值,参数是小数点的位置

var num =19;
alert(num.toFixed(2));//‘19.00’

对于多余的小数点会四舍五入,比如如果是10.009,会变成10.01

使用toExponential()会返回e形式的数值。

var num =19;
alert(num.toExponential(2));//1.90e+1

如果你不知道使用哪一种格式化的形式最好,可以采用toPrecision(),它会替你选择最好的格式化。

var num =19;
alert(num.toPrecision(2));//19

String类型

  • 语法
var stringObject = new String('hello world');

其中valueOf()、toLocalString()和toString()方法返回的是基本类型的字符串。

String类型的每个实例都提供了length属性。

var string = 'sun moon';
alert(string.length);//8
  • 字符方法
    charAt():用来确定字符在字符串中的位置。参数表示相对于0的位置。
var string = 'sun moon';
alert(string.charAt(1));//u

如果你想返回的是字符串的编码,那么可以使用charCodeAt()

var string = 'sun moon';
alert(string.charCodeAt(1));//117
  • 字符操作方法
    concat():拼接字符串,但是它产生的是新字符串,不会对原来的字符串有影响。
var string = 'sun moon';
var newstring = string.concat(" earth");
alert(newstring);//sun moon earth
alert(string);//sun moon

concat的参数可以拼接任意多的字符串。

slice():用于切割字符创,产生子字符串,可以传递两个参数,第一个是起始位置,第二个是结束位置
substring():用于切割字符创,产生子字符串,可以传递两个参数,第一个是起始位置,第二个是结束位置
substr():用于切割字符创,产生子字符串,可以传递两个参数,第一个是起始位置,第二个是切割的个数

PS:这三种方式都是产生新的字符串,所以不会对本来的字符串有影响。

实例:

var string = 'sun moon earth';
alert(string.slice(2));  //n moon earth
alert(string.substring(2)); //n moon earth
alert(string.substr(2)); //n moon earth
alert(string.slice(2,5)); //n m
alert(string.substring(2,5)); //n m
alert(string.substr(2,5)); // n moo

但是当参数是负数的时候,结果就大不相同了。

slice():将传入的负值与长度相加。
substring():将传入的负值转换为0.
substr():将传入的第一个负值与长度相加,第二个转换为0.

var string = 'sun moon earth';
alert(string.slice(-2));  //th
alert(string.substring(-2)); //sun moon earth
alert(string.substr(-2)); //th
alert(string.slice(2,-5)); //n moon
alert(string.substring(2,-5)); //su
alert(string.substr(2,-5)); //""空字符串
  • 字符串位置方法
    indexOf(),lastIndexOf()二者的区别在于一个是从前向后查找,一个是从后向前查找。
    实例:
var str = 'my name is lily';
alert(str.indexOf("y"));  //1
alert(str.lastIndexOf("y"));  //14

var str2 =  'my name is lili';
alert(str.indexOf("y"));//1
alert(str.lastIndexOf("y"));//1

对于str大家是没有问题的。对于第二个str2, 如果,字符串中只存在一个该字母则返回相同的位置。

此外这个方法都可以传递第二个参数,即起始位置。

var str = 'my name is lily';
alert(str.indexOf("y",6));  //14
alert(str.lastIndexOf("y",6));  //1
  • trim()方法:用于删除前置和后置的空格,并产生新的副本。
var str = '     my name is lily     ';
alert(str.trim());//my name is lily
  • 字符串大小转换写法
    1. toLowerCase()
    2. toUpperCase()
    3. toLocalLowerCase():用于特殊的语言
    4. toLocalUpperCase():用于特殊的语言

PS:同样是只产生副本

var str = ' my name is lily ';
alert(str.toUpperCase());//My NAME IS LILY

var str2 = 'MY NAME IS LILY';
alert(str.toLowerCase());//my name is lily
  • 字符串的模式匹配方法
    1.match():含有唯一参数,用来传递正则表达式的,返回字符值
var str = ' my name is lily ';
var matches = str.match(/.ily/g);
alert(matches); //lily

2.search():含有唯一参数,用来传递正则表达式的。返回位置值

var str = ' my name is lily ';
var searches = str.search(/ily/g);
alert(searches); //13

3.replace(a,b):a可以是字符串也可以是正则表达式,b可以是函数或者表达式。

var str = ' my name is lily ';
var replace = str.replace('lily','lili');
alert(replace); // my name is lili 

var str2 = 'cat bat dat hat '
var replace2 = str2.replace(/at/g,'on');
alert(replace2);//con,bon,don,hon

3.split(a,b):用分隔符把字符串分割成多个子字符串,并放在数组中。a(分隔符):可以是字符串或者正则表达式,b(可选):确定数组的大小。

PS:有些浏览器并不兼容这种方式。

4.localeCompare()
该方法用于比较两个字符串,并确定位置关系。
如果A字符串应该在字符串参数前,则返回-1.
如果A字符串应该等于字符串参数,则返回0.
如果A字符串应该在字符串参数后,则返回1.

var str = 'yellow';
var lo = str.localeCompare('black');//1
var lo2 = str.localeCompare('yellow');//0
var lo3 = str.localeCompare('zoo');//-1
alert(lo);
alert(lo2);
alert(lo3);

PS:在不同的语言中localeCompare()的实现也不同

5.fromCharCode()
该方法就是charCodeAt()的反实现,就是把字符编码传唤成字符串。

alert(String.fromCharCode(104));//h

PS:这是一个String构造函数本身的静态方法。

单体内置对象

原文地址:https://www.cnblogs.com/comefuture/p/8305954.html