基本包装类型

(1)值类型:数值、布尔值、null、undefined。

(2)引用类型:对象、数组、函数。

为了方便操作,JavaScript提供了3个特殊的引用类型:Boolean、Number和String。实际上,每当读取一个基本类型值(boolean、number、string)的时候,后台就会创建一个对应的基本包装类型的对象,从而可以调用这些类型的方法来操作数据。

var s1 ="hello javascript";

var s2 = s1.substring(2);

在上面的例子中,s1是一个字符串,是基本类型值。而s1调用了substring()方法,理论上基本类型值不是对象,它们不应该有方法的。其实,为了实现这种操作,后台已经自动完成了一系列的处理。当第二行代码访问s1时,会完成下面一系列操作:

1、创建String类型的一个实例; var s1 = new String("some text");

2、在实例上调用指定的方法;  var s2 = s1.substring(2);

3、销毁这个实例  s1 = null;

引用类型和基本包装类型的主要区别就是对象的生存期。使用new操作符创建的引用类型的实例,在执行流离开当前作用域之前都一直保存在内存中。而自动创建的基本包装类型的对象,则只存在于一行代码的执行瞬间,然后立即被销毁

vars1 ="hello";

s1.name ="Jack";

alert(s1.name);    // undefined

对基本包装类型的实例调用typeof会返回object。

Object构造函数会根据传入值的类型返回相应的基本包装类型:

var obj1 =new Object("hello");

var obj2 =new Object(12);

var obj3 =new Object(true);

alert(obj1 instance of String);// true

alert (obj2 instance of Number);// true

alert(obj3 instance of Boolean);// true

注意,使用new调用基本包装类型的构造函数,与直接调用同名的转型函数不一样:

var val ="10";

var num = Number(val);  // 转型函数(用于转换参数类型的函数)

alert (typeof num);   // 类型是number

var obj =new Number (val);   // 构造函数

alert (typeof obj);// 类型是object

Boolean类型

Boolean是与boolean(布尔值)相对应的基本包装类型

在布尔表达式中使用Boolean对象时要特别注意:布尔表达式中的所有对象都会被转换为true。

var  falseObj = new Boolean (false);  // falseObj变为了true

var  result = falseObj &&true;

alert (result);   // true

var falseVal =false;  //直接用的布尔类型值,仍然是false

result = falseVal &&true;

alert(result);  // false

基本类型与引用类型的布尔值还有两个区别:

typeof操作符对基本类型返回“boolean”,而基本包装类型返回“object”

使用instanceof操作符测试Boolean对象会返回true,而测试基本类型的布尔值则返回false。

alert (typeof falseObj);  // 基本包装类型返回object

alert(typeof falseVal);  // 基本引用类型返回boolean

alert(falseObj  instanceof  Boolean);// 基本包装类型返回true

alert(falseVal  instanceof  Boolean);// 基本引用类型返回false

Number类型

(1)toFixed()方法会按照指定的小数位返回值得字符串表示。

var  num1 =11;

alert  (num1.toFixed(2));   // "11.00"

var  num2 =11.005;

alert  (num1.toFixed(2));  // "11.01"

(2)toExponential()方法用于格式化,返回指数表示法。

var num =11;

alert  (num.toExponential(1));    // “1.0e+1”

(3)toPrecision()方法可能返回固定大小格式,也可能返回指数格式。可以接收一个参数,表示数值的所有数字的位数(不含指数部分)

var num =99;

alert(num.toPrecision(1));  // "1e+2",即100,无法准确表示99

alert(num.toPrecision(2));  // "99"

alert(num.toPrecision(3));  // "99.0"

与Boolean类型相似,使用typeof和instanceof操作基本类型数值和引用类型数值时,得到的结果完全不同。

String类型

1、字符方法

两个用于访问字符串中特定字符的方法:charAt()和charCodeAt()。

charAt():以单字符串的形式返回给定位置的那个字符

charCodeAt():返回字符的编码

var strVal ="hello";

alert(strVal.char(1));  // "e"

alert(strVal.charCodeAt(1));    // "101"

2、字符串操作方法

concat()、slice()、substr()、substring()

3、字符串位置方法

indexOf()、lastIndexOf()

4、删除空格

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

5.字符串大小写转换方法

toLocaleUpperCase()、toUpperCase()、toLocaleLowerCase()、strVal.toLowerCase()

6.字符串模式匹配方法

(1)match()

var  text ="cat, bat, sat, fat";

var  pattern =/.at/  ;

var  matches = text.match(pattern);

alert (matches.index);// 0

alert (matches[0]);// "cat"

alert (pattern.lastIndex);// 0

(2)search()

var  text ="cat, bat, sat, fat";

var  pos = text.search(/at/);

alert(pos);// 1

(3)replace()

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

(4)split()

7、localeCompare()方法

localeCompare()用于比较两个字符串,并返回下列结果之一:

如果字符串在字母表中应该排在字符串参数之前,则返回一个负数(多数情况为-1,具体由实现而定)

如果字符串等于字符串的参数,则返回0;

如果字符串在字母表中应该排在字符串参数之后,则返回一个整数(多数情况为1,具体由实现而定)

8.fromCharCode()

String构造函数本身有一个静态方法:fromCharCode()。这个方法的任务是接收一或多个字符编码,然后将它们转换成一个字符串。

alert (String.fromCharCode(104,101,108,108,111));    // "hello"

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容