将自己在阅读《javascript高级程序设计》一书的笔记记录下来
第一章------第四章
第五章
5.6基本包装类型
引用类型与基本包装类型的主要区别就是对象的生存期。
使用new操作符创建的引用类型的实例,会在代码离开当前作用域之前一直存在,而自动创建的基本包装类型的对象,则只存在于一行代码的执行瞬间,然后被销毁。
var s1 = "some text";
s1.color = "red";
alert(s1.color); //代码返回undefined
第二行代码试图为s1添加一个color属性,但是当代码执行到第三行时,第二行创建的string对象已经被销毁了。所以当调用s1实例时,会返回undefined
需要注意使用new调用的函数,会被转换为所调用函数的类型
var value = "25";
var number = Number(value); //转型函数
alert(typeof number); //"number"
直接调用同名的转型函数,则不会被转换
var value = "25"
var obj = new Number(value); //构造函数
alert(typeof obj) //"object"
5.6.3 String类型
三个基于字符串创建新字符串的方法
- slice(a,b); a表示字符串开始位置,b表示字符串截至位置
- substr(a,b); a表示字符串开始位置,b表示要返回的字符个数
- substring(a,b); a表示字符串开始位置,b表示字符串截至位置
var stringValue = "hellow world";
alert(stringValue.slice(3)); //"lo world"
alert(stringValue.substr(3,7)); //"lo worl"
alert(stringValue.substring(3,7)); //"lo w"
如果传入的a,b是负值
- slice(a,b); 将传入的负值与字符串的长度想加
- substr(a,b); 会将传入的a加上字符串的长度,(b)转换为0
- substring(a,b); 会将所有负值参数转换为0 (*如果转换后的值 a>b则变成(b,a))
var stringValue = "hello world";
alert(stringValue.slice(-3)); //"red" (11+-3=8)
alert(stringValur.substring(-3)); //"hello world"
alert(stringValue.substring(3,-1)); //"hel" 因为转换后3>0 所以变为(0,3)