首页 > 语言 > JavaScript > 正文

JavaScript引用类型之基本包装类型实例分析【Boolean、Number和Stri

2024-05-06 15:31:56
字体:
来源:转载
供稿:网友

本文实例讲述了JavaScript引用类型之基本包装类型。分享给大家供大家参考,具体如下:

为了操作基本类型值,ECDMAScript提供了3个特殊的引用类型——基本包装类型Boolean、Number和String。每当读取一个基本类型值时,后台会创建一个对应的基本包装类型的对象。

var str = "Hello world";var substr = str.substring();

等价于

var str = new String("Hello world");//创建String类型的实例var substr = str.substring();//在实例上调用substring()方法str = null;//销毁实例

基本包装类型是特殊的引用类型,引用类型与基本包装类型的区别如下:

(1)对象的生存期

使用new操作符创建的引用类型的实例,在执行流离开当前作用域之前一直存在于内存中,而自动创建的基本包装类型的对象,只存在于代码执行瞬间,然后立即被销毁,也就是说,不能在运行时为基本包装类型添加属性和方法。

var str1 = "Hello world";var str2 = new String("Hello World");str1.life = 20;str2.life = 20;alert(str1.life);//undefinedalert(str2.life);//20

(2)instanceof操作符测试结果

使用instanceof操作符测试基本包装类型实例会返回true,测试基本类型值会返回false。

var str1 = "Hello World";var str2 = new String("Hello world");alert(str1 instanceof String);//falsealert(str2 instanceof String);//true

可以显式地调用Boolean、Number、String来创建基本包装类型的对象,但尽可能不要这样做,因为这样不易区分是在处理基本类型还是引用类型。

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

var str = new String("Hello world");alert(str instanceof String);//truevar num = new Number(16);alert(num instanceof Number);//truevar bool = new Boolean(true);alert(bool instanceof Boolean);//true

对基本包装类型的实例调用typeOf()方法会返回"Object",实例变量中保存的是基本类型值。

var str = new String("Hello world");alert(typeof str);//objectvar num = new Number(16);alert(typeof num);//objectvar boolean = new Boolean(true);alert(typeof boolean);//object

使用new操作符调用基本包装类型的构造函数,与直接调用同名的转型函数是不同的,变量中保存的是基本包装类型的实例。

var str = String("Hello world");alert(typeof str);//stringvar num = Number(16);alert(typeof num);//numbervar bool = Boolean(true);alert(typeof bool);//boolean

所有基本包装类型的对象在转换为布尔类型时值都是true。

var boolean1 = new Boolean(false);alert(boolean1);//falsealert(boolean1 && true);//truevar boolean2 = new Boolean(0);alert(boolean2);//falsealert(boolean2 && true);//truevar boolean3 = new Boolean("");alert(boolean3);//falsealert(boolean3 && true);//true            
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选