JavaScript类型系统的基本数据类型和封装类型
写在前面
javascript的数据类型可以分为两种:原始类型和引用类型。
原始类型也称为基本类型或简单类型,因为它们占据固定的空间,并且是简单的数据段。为了加速变量查询,它们存储在堆栈中(通过值访问)。其中,javascript基本数据类型包括Undefined、Null、Boolean、Number和String。
因为引用的值的大小会改变,所以不能存储在堆栈中,否则会降低变量查询速度,所以存储在堆中,变量中存储的值是指向存储对象的内存的指针(逐地址访问)。
[注意]对于引用类型值,可以为其添加属性和方法,也可以更改和删除其属性和方法;但是,属性和方法不能添加到基本类型中。
不明确的
未定义的类型只有一个值,它是未定义的。当声明的变量未初始化时,变量的默认值是未定义的。
var测试;//undefinedconsole . log(test==undefined);//truevar测试=未定义;//undefined一个未声明的变量只能执行一个操作,typeof运算符用于检测其数据类型,但在严格模式下会导致错误。
测试类型;//未定义
场景出现。
[1]声明了一个未赋值的变量。
[2]获取对象不存在的属性。
[3]无返回值函数的执行结果。
没有传入[4]函数的参数。
[5]void(表达式)
类型变换
布尔(未定义):假数字(未定义):南字符串(未定义):“未定义”空
Null类型只有一个值,该值为空。逻辑上,空值表示空的对象指针。如果定义的变量将用于保存对象,最好将变量初始化为null。实际上,未定义的值是从null值派生出来的,所以undefined==null。
[注意]null是空对象指针,而[]是空数组,{}是空对象,两者是不同的。
console.log(null==未定义);//真场景出现。
当对象不存在时。
类型变换
布尔(空):假数字(空): 0字符串(空):“空”
[注意]因为undefined和null不是构造函数类型,所以不能添加自定义属性。
包装类型
包装类型是一种特殊的参考类型。每当读取基本类型值时,后台将创建一个基本包装类型的相应对象,该对象可能会调用一些方法来操作数据。包装类型包括布尔值、数字和字符串。
var s1='某些文本';var S2=S1 . substring(2);//在上面的过程中,实际发生了三个步骤:var s1=new String('某些文本');//(1)创建String类型var s2=s1.substring(2)的实例;//(2)在实例上调用指定的方法s1=null//(3)销毁此实例【注意】引用类型和基本封装类型的主要区别是对象的生存期。使用新运算符创建的引用类型的实例将保留在内存中,直到执行流离开当前范围。但是,自动创建的基本打包类型的对象只在执行一行代码时存在,然后立即被销毁。这意味着您不能在运行时向基类型值添加属性和方法。
var s1='某些文本';s1.color=' redalert(S1 . color);//未定义的创建方法。
有两种方法可以显式创建包类型。
[1]对象模式[不推荐]。
var s=新对象(“ABC”);变量b=新对象(真);var n=新对象(123);[2]构造函数模式[不推荐]。
var s=新字符串(' ABC ');var b=新布尔值(真);var n=新数字(123);[注意]使用new调用基本包装类型的构造函数不同于直接调用同名的转换函数。
var值=' 25 ';var number=Number(值);console.log(数字类型);//numbervar obj=新数字(值);console . log(obj的类型);//对象布尔值
布尔类型只有两个值:真和假。布尔包装类型是与布尔值相对应的引用类型,在布尔表达式中使用布尔对象时容易产生误解。
场景出现。
[1]条件语句导致系统执行隐士类型转换。
[2]文字量或变量定义。
类型变换
数字(真): 1 ||数字(假): 0字符串(真):“真”||字符串(假):“假”
布尔型()
布尔(未定义):假布尔(空):假
布尔值(非空对象包括空数组[]和空对象{}):true。
布尔值(非0): true ||布尔值(0和NaN):false。
布尔值(包含空格的非空字符串): true | |布尔值('): false。
【注】真不一定等于1,假不一定等于0。
类型继承的包装方法。
ValueOf():返回基类型值true或false。
ToString()和toLocaleString():返回字符串“true”或“false”。
console.log(typeof true.valueOf(),true . value of());//boolean true console . log(type of false . value of(),false . value of());//boolean false console . log(type of true . tostring(),true . tostring());//String ' true ' console . log(type of false . tostring(),false . tostring());//String ' false ' console . log(type of true . tolocalestring(),true . tolocalestring());//String ' true ' console . log(type of false . tolocalestring(),false . tolocalestring());//字符串“假”数字
javascript中只有一种数字类型,既可以表示32位整数,也可以表示64位浮点数。
有关数字类型的更多信息移至此处。
线
字符串类型是javascript中唯一没有固定大小的基本类型。
接下来,让我们了解一下JavaScript基本数据类型的包装对象。
现象:为什么字符串的运算可以用对象来表示?
例如:
var s=“这是一个字符串”;var len=s长度;解析:
JavaScript的三种基本数据类型都有对应的对象类。它们分别是sring、number和boolean类;JavaScript可以灵活地将一种类型的值转换成另一种类型的值;当我们在对象环境中使用一个字符串时,也就是当我们试图访问这个字符串的属性或方法时;JavaScript将在内部为此字符串值创建一个字符串包装对象;String对象将临时替换原始字符串值,以完成我们的访问;这个内部创建的String对象瞬间存在,它的功能是让我们能够正常访问属性和方法。字符串对象在使用后将被系统丢弃。并且原值不会改变;
上述内容也适用于数值和布尔值。
使用Object()函数,任何数字、字符串或布尔值都可以转换为其对应的包装对象。
例如:
var number _ wrapper=Object(3);
版权声明:JavaScript类型系统的基本数据类型和封装类型是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。