JavaScript中的基本包装类型

1.背景介绍

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

2.知识剖析

new运算符

var box = 'Mr. Lee';
box.name = 'Lee';//无效属性
box.age = function () {//无效方法
return 100;
};
console.log(box);//Mr. Lee
console.log(box.name);//undefined

console.log(box.age());//错误


var box = new String('Mr. Lee');//new 运算符
box.name = 'Lee';//有效属性
box.age = function () {//有效方法
return 100;
};
console.log(box);//Mr. Lee
console.log(box.name);//Lee
console.log(box.age());//100
String、Boolean 和 Number都可以使用new操作符


String类型

创建: var stringObject  =  new String("text");
属性:length: 表示字符串中包含多少个字符
方法: 1.charAt(): 返回对应位置的特定字符,参数为基于0的位置。
           2.charCodeAt(): 返回对应位置的字符编码,参数为基于0的位置。



var stringValue =  new String("hello world");

console.log(stringValue.charAt(1)); //e

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


Boolean类型

var Booleanobject=new Boolean(true);

强调:布尔表达式中的所有对象都会被转换为true。


Number类型
Number 是原始数值的包装对象。


var numberobject=new Number(10);


Number具有的属性有最小值、最大值等。

Number 类型的方法
toString()将数值转化为字符串,并且可以转换进制
toLocaleString()根据本地数字格式转换为字符串
toFixed()将数字保留小数点后指定位数并转化为字符串
toExponential()将数字以指数形式表示,保留小数点后指定位数并转化为字符串
toPrecision()将数字以指数形式或点形式表示,保留小数点后面指定位数并转化为字符串
toFixed()方法:会按照指定的小数位返回数值的字符串表示

var num=10;
console.log(num.toFixed(2));//10.00


这里给toFixed()传入数值2,表示显示2位小数。


var box = 1000.789;

console.log(box.toString());//转换为字符串,传参可以转换进制

console.log(box.toLocaleString());//本地形式,1,000.789

console.log(box.toFixed(2));//小数点保留,1000.79

console.log(box.toExponential());//指数形式,传参会保留小数点

console.log(box.toPrecision(3));//指数或点形式,传参保留小数点


3.常见问题


如何替换子字符串的内容?


4.解决方案


使用replace()的方法

var h = "cat, bat, sat, fat";
console.log(h.replace("at", "ond"));
console.log(h.replace(/at/g, "end"));


5.编码实战


6.扩展思考


7.参考文献


一、javascript基本包装类型介绍


二、JavaScript:基本包装类型 - 萧萧弈寒 - 博客园


三、javaScript对象-基本包装类型的详解 - 心知梦圆 - 博客园


四、javascript学习——基本包装类型总结 - CSDN博客


五、js之基本包装类型 - 小小gogo - 博客园


8.更多讨论



问题一

javascript中基本类型和引用类型的关系是什么?

答:

是相互独立的关系,js中变量分类为1.基本类型:变量的内容保存在变量的本地。2.引用类型:变量的内容不保存在变量的本地而是保存在内存的其他地方,变量中保存的是这个内存的地址的值。


问题二

为什么 Boolean 类型没有特定的属性或者方法?

答:Boolean构造出来的对象没有特定的属性或方法,布尔表达式中的所有对象都会被转换为true。


问题三

引用类型与基本包装类型有什么不同?

答:

在于对象的生命周期。

使用new关键字创建的引用类型的实例,对象在当前作用域都存在。而基本包装类型自动创建的对象则在对象被调用的时刻存在,调用完毕后,就被销毁不存在了。

Object()构造函数,可以根据你传入的参数的类型,返回基本包装类型的实例。你传入字符串,则返回String类型的实例;传入数字,则返回Number类型的实例;传入布尔值,则返回Boolean类型实例。如:

var obj = new Object("hello,1024idea");
console.log(obj instanceof String);// true
注意:使用new关键字创建的构造函数与使用同名的转型函数的效果是不一样的。如:

// 构造函数与转型函数返回值的区别
var str = "1024";

var strObj = new String(str);
console.log(typeof strObj);//object

var strNum = Number(str);
console.log(typeof strNum);//number
这个例子中,变量strObj保存的是object类型,而变量strNum保存的是number类型。

一般情况下,是不建议手动的去创建基本包装类型的对象,因为这样经常造成的问题是,分不清自己是在处理基本包装类型还是引用类型。



PPT

视频

猜你喜欢

转载自blog.csdn.net/happiness2018/article/details/80222733