第五章 引用类型> 基本包装对象

 基本包装对象

3种特殊的引用类型:Boolean, Number和String

当读取一个基本类型的值时,后台会创建一个对应的基本包装类型的对象,能够调用一些方法来操作这些数据。

var s1 = "some text";
var s2 = s1.substring(2);
console.log(s2);
//  me text

//实际上再访问s1值的时候,后台自动完成了下面一系列操作
var s1 = new String(“some text”);
//创建一个String类型的实例;
var s2 = s1.sustring(2);
//调用指定的方法
s1 = null;
//销毁这个实例

引用类型跟包装类型的主要区别: 对象的生存期。

new操作符创建的引用类型的实例: 执行流离开作用域之前保存再内存中;

自动创建的基本包装对象:存在于代码执行的一瞬间,随后立即被销毁。

Boolean类型 

基本类型和引用类型的布尔值区别:

1、typeof操作符对基本类型返回"boolean",引用类型返回“object”;

2、instanceof对基本类型返回false,引用类型返回true;

Number类型

Number类型重写了valueof()、tocaleString()和toString()方法,

valueof:返回对象表示的基本类型的数值,

tocaleString()和toString():返回字符串形式的数值。

String类型

字符方法

charAt() 和charCodeAt(): 接受一个参数,基于0的字符位置。

var stringValue = "hello world";
console.log(stringValue.charAt(0));
console.log(stringValue[1])
//可以像访数组一样使用下标来访问字符串
// h
// e

console.log(stringValue.charCodeAt(1));
//"101"    

字符串操作方法:

concat():字符串拼接,返回拼接得到的新字符串。可以接受任意多的参数。

var stringValue = "hello ";
var result = stringValue.concat("world");
console.log(result);
console.log(stringValue);
// hello world
// hello 

基于子字符串创建新字符串的方法:

slice()、substr()、substring():返回被操作字符串的一个子字符串。第一个参数指定字符串的起始位置,第二个参数字符串到那结束。

substring():第二个参数指返回的字符个数。

返回的都是一个基本类型的字符串值,原始字符串没有任何影响。                 

var stringValue = "hello world";

console.log(stringValue.slice(3));
console.log(stringValue.substring(3));
console.log(stringValue.substr(3));

console.log(stringValue.slice(3, 7));
console.log(stringValue.substring(3, 7));
console.log(stringValue.substr(3, 7));

// lo world
// lo world
// lo world
// lo w
// lo w
// lo worl

传递负值

var stringValue = "hello world";

console.log(stringValue.slice(-3));          
console.log(stringValue.substring(-3));
console.log(stringValue.substr(-3));

console.log(stringValue.slice(3, -4));
console.log(stringValue.substring(3, -4));
console.log(stringValue.substr(3, -4));

//  rld                11+(-3);
//  hello world    substring把负值转换为0
// rld                 11+(-3);
// lo w               第二参数11+( -4)              
// hel                 substring 较小的是作为开始位置
// ""                  第二参数把负值转为0  

字符串位置方法:

indexOf(): lastIndexOf() 从一个字符串中搜索给定的子字符串。返回子字符串的位置。没有找到返回-1;

indexOf(),从字符串的头部向后搜索。lastIndexOf()从后向前。

var stringValue = "hello world";
console.log(stringValue.indexOf("o"));
console.log(stringValue.lastIndexOf("o"));
// 4
// 7

可选的第二个参数,表示从字符中的那个位置开始搜索。

var stringValue = "hello world";
console.log(stringValue.indexOf("o", 6));         //位置从"w"开始向后搜索,忽略之前的字符
console.log(stringValue.lastIndexOf("o", 6));     //从“空格”开始向前搜索,忽略后面的字符

// 7
// 4
var stringValue = " Lorem ipsum dolor sit amet, consectetur adipisicing elit";
var positions = new Array();                           //实例化一个数组 
var pos = stringValue.indexOf("e");                    //查找字母e保存再pos函数里

while(pos > 1) {                                       //pos里面有字符的时候,
  positions.push(pos);                                //把字符串推进数组
  pos = stringValue.indexOf("e", pos + 1);            //每次找到字母,都让字符串的位置+1
}
console.log(positions);

// [4, 25, 33, 36, 53]

trim()方法:创建一个字符串副本,删除前置及后戳的所有空格、返回结果

var str = " hello world ";
var trimStr = str.trim();
console.log(str);
console.log(trimStr);
// "  hello world " 
// hello world

字符串的模式匹配方法:

match():接受一个参数,正则或RegExp对象

var text = "cat, bat, sat, fat";
var pattern = /.at/;

var matches = text.match(pattern);
console.log(matches.index);
console.log(matches[0]);
console.log(matches.lastIndex);
// 0
// cat
//undefined

search(): 接受一个参数,字符串或RegExp对象,返回字符串中第一个匹配项的索引;未找到返回-1;

var text = "cat, bat, sat, fat";
var pos1 = text.search(/at/);
console.log(pos1);
// 1

replace(): 替换子字符串,接受2个字参数,第一个参数可以是一个RegExp或一个字符串。第二个参数可以是一个字符串或者函数。只会替换第一个字符串,替换全部字符串需要指定全局模式;

var text = "cat, bat, sat, fat";
var pos2 = text.replace("at", "ond");
var pos3 = text.replace(/at/g, "ond");
console.log(pos2);
console.log(pos3);

// cond, bat, sat, fat
// cond, bond, sond, fond

split(): 用指定的字符分割字符串,接受2个参数第一个参数:可以是字符串或RegExp对象。第二个参数,指定字符串的大小。

var  color = "red, blue, yellow, green";
var color1 = color.split(",");
var color2 = color.split(",", 2);
var color3 = color.split(/[^\,]+/);
console.log(color1);
console.log(color2);
console.log(color3);

// ["red", " blue", " yellow", " green"]
// ["red", " blue"]
// ["", ",", ",", ",", ""]

单体内置对象

1、Global对象:不属于任何其他对象的属性和方法,最终都是它的属性和方法。再全局作用域中定义的属性和函数,都是Global对象的属性。

evel():像一个完整的EC解析器,只接受一个参数,即要执行的JS字符串

eval(console.log("hi"));
//  hi

再eval()中创建的任何变量和函数都不会被提升,因为再解析代码的时候,它们被包含再一个字符串中,它们只在eval执行时创建。

再Web浏览器将Golbal对象作为window对象的一部分加以实现的。

2.Math对象

原文地址:https://www.cnblogs.com/zhangbaihua/p/5564632.html