javaScript基本包装类型及变量定义的区别
2017-11-13 14:29
381 查看
早在我的第一篇文章中就已经讲到了JavaScript中的变量及变量定义。这篇文章将会再拓展一些别的 。在开始之前我想你先回答我:
var number1 = new Number(10);
var number2 = 10;
的区别。
如果你没能够回答上来,那么就更应该读读这篇文章。下面开始正文:
基本包装类型
ECMAScripe提供了3个特殊的引用类型:Boolean、Number和String。说好的基本类型呢,怎么突然就变了卦。我起初也是这么想的,可往往现实就是这么残酷。当我觉得javaScript中的类型我已经可以玩转自如的时候上天又告诉我这些类型还能拥有方法和属性。
var string1 = "string";
var string2 = string1.substring(2);
从逻辑上而言基本类型是不应该有方法的,但是在上面代码中string1调用了substring()方法,并将结果保存在了string2中。详细一点说:在执行第二行代码时,访问过程处于一种读取模式,也就是要从内存中读取这个字符串的值。而在读取模式中访问字符串时,后台都会自动完成下列处理。
1、创建String类型实例;
2、在实例上调用指定方法;
3、销毁实例;
这样基本类型的字符串值就变得跟对象一样。而且,这同样适用于Boolean和Number类型对应的布尔值和数字值。
引用类型与基本包装类型的主要区别就是对象的生存期。
var string1 = "string";
string1.student = "zhangsan";
alert(string1.student); //undefined
第二行代码为string1添加了一个student属性。但是,在第三行的访问中student属性又不见了。原因就是在第二行代码执行完毕之后,创建的string对象已经被销毁了。第三行又重新创建了string对象,所以没有student属性。
Boolean类型
Boolean类型是与布尔值对应的引用类型。要创建Boolean对象,可以调用Boolean构造函数并传入true或false值。
var boolean1 = new Boolean(true);
Boolean类型的实例重写了valueOf()方法和toString()方法。valueOf()返回基本类型值true或false;toString()返回字符串"true"和"false"。
不推荐使用Boolean对象,请看下面这个例子:
var falseBoolean1 = new Boolean(false);
var boolean1 = falseBoolean1 && true;
alert(boolean1);
//true
var falseBoolean2 = false;
var boolean2 = falseBoolean2 && true;
alert(boolean2);
//false
在布尔表达式中的所有对象都会被转成true,因此falseBoolean1在表达式中表示的是true。结果,true && true最后结果还是true。而基本类型falseBoolean2在表达式中表示的是false,结果当然也大不相同。
基本类型与引用类型的不同之处还体现在typeof和instanceof操作符上。例如:
alert(typeof falseBoolean1); //object
alert(typeof falseBoolean2); //boolean
alert(falseBoolean1 instanceof Boolean); //true
alert(falseBoolean2 instanceof Boolean); //false
首先,typeof操作符对基本类型返回boolean,而对引用类型返回object。其次,由于Boolean对象是Boolean类型的实例,所以使用insatnceof操作符测试Boolean对象会返回true,而测试基本类型的布尔值则返回false。
Number类型
Number是与数字值对应的引用类型。和创建Boolean对象一样需要调用构造函数并向其中传递一个数值。
var number1 = new Number(10);
与Boolean类型一样,Number类型也重写了valueOf()、toLocaleString()和toString()方法。虽然Number对象也以后台方式为数值提供了重要的功能,但在typeof和instanceof操作符上与Boolean类型相同。
var number1 = new Number(10);
var number2 = 10;
alert(typeof number1);
//"object"
alert(typeof number2);
//"number"
alert(number1 instanceof Number);
//true
alert(number2 instanceof Number);
//false
是否还记得在文章开始时留下的问题,现在心里应该都有答案了吧。下一次会单独介绍一下String类型,这篇文章就到此结束了,谢谢。
var number1 = new Number(10);
var number2 = 10;
的区别。
如果你没能够回答上来,那么就更应该读读这篇文章。下面开始正文:
基本包装类型
ECMAScripe提供了3个特殊的引用类型:Boolean、Number和String。说好的基本类型呢,怎么突然就变了卦。我起初也是这么想的,可往往现实就是这么残酷。当我觉得javaScript中的类型我已经可以玩转自如的时候上天又告诉我这些类型还能拥有方法和属性。
var string1 = "string";
var string2 = string1.substring(2);
从逻辑上而言基本类型是不应该有方法的,但是在上面代码中string1调用了substring()方法,并将结果保存在了string2中。详细一点说:在执行第二行代码时,访问过程处于一种读取模式,也就是要从内存中读取这个字符串的值。而在读取模式中访问字符串时,后台都会自动完成下列处理。
1、创建String类型实例;
2、在实例上调用指定方法;
3、销毁实例;
这样基本类型的字符串值就变得跟对象一样。而且,这同样适用于Boolean和Number类型对应的布尔值和数字值。
引用类型与基本包装类型的主要区别就是对象的生存期。
var string1 = "string";
string1.student = "zhangsan";
alert(string1.student); //undefined
第二行代码为string1添加了一个student属性。但是,在第三行的访问中student属性又不见了。原因就是在第二行代码执行完毕之后,创建的string对象已经被销毁了。第三行又重新创建了string对象,所以没有student属性。
Boolean类型
Boolean类型是与布尔值对应的引用类型。要创建Boolean对象,可以调用Boolean构造函数并传入true或false值。
var boolean1 = new Boolean(true);
Boolean类型的实例重写了valueOf()方法和toString()方法。valueOf()返回基本类型值true或false;toString()返回字符串"true"和"false"。
不推荐使用Boolean对象,请看下面这个例子:
var falseBoolean1 = new Boolean(false);
var boolean1 = falseBoolean1 && true;
alert(boolean1);
//true
var falseBoolean2 = false;
var boolean2 = falseBoolean2 && true;
alert(boolean2);
//false
在布尔表达式中的所有对象都会被转成true,因此falseBoolean1在表达式中表示的是true。结果,true && true最后结果还是true。而基本类型falseBoolean2在表达式中表示的是false,结果当然也大不相同。
基本类型与引用类型的不同之处还体现在typeof和instanceof操作符上。例如:
alert(typeof falseBoolean1); //object
alert(typeof falseBoolean2); //boolean
alert(falseBoolean1 instanceof Boolean); //true
alert(falseBoolean2 instanceof Boolean); //false
首先,typeof操作符对基本类型返回boolean,而对引用类型返回object。其次,由于Boolean对象是Boolean类型的实例,所以使用insatnceof操作符测试Boolean对象会返回true,而测试基本类型的布尔值则返回false。
Number类型
Number是与数字值对应的引用类型。和创建Boolean对象一样需要调用构造函数并向其中传递一个数值。
var number1 = new Number(10);
与Boolean类型一样,Number类型也重写了valueOf()、toLocaleString()和toString()方法。虽然Number对象也以后台方式为数值提供了重要的功能,但在typeof和instanceof操作符上与Boolean类型相同。
var number1 = new Number(10);
var number2 = 10;
alert(typeof number1);
//"object"
alert(typeof number2);
//"number"
alert(number1 instanceof Number);
//true
alert(number2 instanceof Number);
//false
是否还记得在文章开始时留下的问题,现在心里应该都有答案了吧。下一次会单独介绍一下String类型,这篇文章就到此结束了,谢谢。
相关文章推荐
- JAVA 对象定义、访问对象、基本类型和引用类型变量区别
- 【JavaScript】变量和基本包装类型
- javascript 引用类型 - 基本包装类型(深入理解基本包装类型和基本类型的区别)
- 第2章 变量和基本类型 附2 --声明和定义的区别
- javascript基本包装类型介绍
- (一):T-SQL语言分类、基本数据类型、定义变量及赋值
- JavaScript基本包装类型
- Java语言基础{Java_se(02)}-字面量和常量-变量的基本定义和使用-Java表达式-数据类型和分类-基本数据类型的转换-算数运算符-赋值运算符-比较运算符-三元运算符-逻辑运算符
- 说说 JavaScript 基本包装类型
- final修饰基本类型和引用类型变量的区别
- Javascript之基本包装类型
- JavaScript中基本数据类型和引用数据类型的区别
- 你不知道的JavaScript--Item4 基本类型和基本包装类型(引用类型)
- javascript数据基本类型和引用类型区别详解
- JavaScript基础——引用类型(四)基本包装类型(Boolean、Number、String)、单体内置对象(Global、Math)
- JavaScript基本概念(变量 数据类型)
- javascript 基本类型和引用类型的区别
- JavaScript——变量与基本数据类型
- 第一部分 基本语言 第二章 变量和基本类型(2.3.6名字的作用域)(2.3.7在变量的使用处定义变量)
- javascript 中基本包装类型