大话前端让前端飞程序员

JS之基本包装类型

2018-03-12  本文已影响5人  fenerchen

为了便于操作基本类型值,,ECMAScript 提供了3 个特殊的引用类型:Boolean、Number和String。这些类型与其他引用类型相似,但同时也具有与各自的基本类型相应的特殊行为。每当读取一个基本类型值的时候,后台就会创建一个对应的基本包装类型的对象,从而能够调用一些方法来操作这些数据。

基本包装类型总结

字面量写法的变量,无法为其添加属性和方法,但是new运算符写法可以,但是不建议自己添加属性和方法。

var box = 'aa'; //字面量
box.name = 'v'; //无效属性
box.age = function () { //无效方法
return 100;
};
var box = new String('aa);  //new 运算符
box.name = 'v'; //有效属性
box.age = function () { //有效方法
return 100;
};

Boolean类型

无特定属性和方法

Number类型


var box = 1000.789;
alert(box.toString()); //转换为字符串,传参可以转换进制
alert(box.toLocaleString()); //本地形式,1,000.789
alert(box.toFixed(2)); //小数点保留,1000.78
alert(box.toExponential()); //指数形式,传参会保留小数点
alert(box.toPrecision(3)); //指数或点形式,传参保留小数点

String类型

3个属性+大量可用内置方法


var box = 'Mr.Chen';
alert(box.charAt(1)); //r
alert(box.charCodeAt(1)); //114
alert(box[1]); //r,通过数组方式截取

这个比较重要,需要说明一点,这4个方法均不改变元字符串。对于后3个,参数(n,m),取下标n不取m。当只有n时,取到最后一个字符(包含)。当n为负数时(无m),slice(n)和substr(n)从length+n位置取,而substring(n)返回全部。当n不为负,m为负数时,slice(n,m)取数规则不变,但是substring(n,m),将m设为0,并且方法会把较小的数字提前。substr(n,m),第二个负数转0,例如(3,-1)=》(3,0)无返回值。
var box = 'Mr.Chen';
alert(box.concat(' is ', ' Teacher ', '!')); //Mr.Chen is Teacher !
alert(box.slice(3)); //Chen
alert(box.slice(3,5)); //Ch
alert(box.substring(3)); //Chen
alert(box.substring(3,5)); //Ch
alert(box.substr(3)); //Chen
alert(box.substr(3,5)); //Chen
var box = 'Mr.Chen';
alert(box.slice(-3)); //Chen,6+(-3)=3 位开始
alert(box.substring(-3)); //Mr.Chen 负数返回全部
alert(box.substr(-3)); //Chen,6+(-3)=3 位开始
var box = 'Mr.Chen';
alert(box.slice(3, -1)); //Ch 6+(-1)=5, (3,5)
alert(box.substring(3, -1)); //Mr. 第二参为负,直接转0,
//并且方法会把较小的数字提前,(0,3)
alert(box.substr(3, -1)); //'' 第二参数为负,直接转0 ,(3,0)

字符串模式匹配也比较重要,match方法,返回一个数组,是匹配的字符串。添加index,和input属性
var text = "cat, bat, sat, fat";
var pattern = /.at/;
//与pattern.exec(text)相同
var matches = text.match(pattern);
console.log(matches)
var text = "mom and dad and baby";
var pattern = /mom( and dad( and baby)?)?/gi;
var matches = pattern.exec(text);
console.log(matches)

输出

["cat", index: 0, input: "cat, bat, sat, fat"]
(3) ["mom and dad and baby", " and dad and baby", " and baby", index: 0, input: "mom and dad and baby"]
//matches[0]是整个匹配的字符串,后面1和2是捕获的元组

split()方法可以接受可选的第二个参数,用于指定数组的大小,
以便确保返回的数组不会超过既定大小

var colorText = "red,blue,green,yellow";
var colors1 = colorText.split(","); //["red", "blue", "green", "yellow"]
var colors2 = colorText.split(",", 2); //["red", "blue"]
var colors3 = colorText.split(/[^\,]+/); //["", ",", ",", ",", ""],以非逗号分隔,共有4个分隔单词,分隔出5项

alert(String.fromCharCode(76)); //L,输出Ascii 码对应值
localeCompare(str1,str2)方法详解:比较两个字符串并返回以下值中的一个;
1.如果字符串在字母表中应该排在字符串参数之前,则返回一个负数。(多数-1)
2.如果字符串等于字符串参数,则返回0。
3.如果字符串在自附表中应该排在字符串参数之后,则返回一个正数。(多数1)

var box = 'Lee';
alert(box.localeCompare('apple')); //1
alert(box.localeCompare('Lee')); //0
alert(box.localeCompare('zoo')); //-1

trim()方法

该方法会创建一个字符串的副本,删除前置及后缀的所有空格,然后返回结果。

var stringValue = " hello world ";
var trimmedStringValue = stringValue.trim();
alert(stringValue); //" hello world "
alert(trimmedStringValue); //"hello world"

参考资料:JavaScript高级程序设计(第3版)

上一篇下一篇

猜你喜欢

热点阅读