【Javascript 拾遗之六】深入Javascript数据类型和对象类型
深入Javascript数据类型
1、6种基本数据类型和1种抽象数据类型
6种基本数据类型包括 : undefined、null、boolean、number、string 和 function。1种抽象数据类型: Object ,包含8种标准对象类型: Function、Number、Math、 String、 Date、Array、Boolean 和 RegExp 。Javascript 支持自定义的Object类型。是不是很丰富,哈哈,够搞一辈子的。Javascript 是弱类型的语言,也就是在代码中可以隐式转换类型。
2、判断数据类型
2.1 typeof
判断对象类型我们首先想到的是typeof, 同样typeof也是比较靠谱的一种比较方法。
用法: typeof 表达式
习惯上我们一般用这样的判断写法: typeof x === 'undefined' ?...
1 var a = '' + 123; 2 console.log(typeof a === 'string'); //true
2.2 强类型判断符
用三个等号 “===” 可以判断两个表达式的类型和值是否相等。等同于 a == b && typeof a === typeof b
1 var a = '' + 123; 2 var b = 123; 3 console.log(a === b); //false
2.3 构造函数判断
同样我们可以用constructor属性判断类型。
1 var b = [1, 2, 3]; 2 console.log(b.constructor === Array); // true
2.4 instanceof 判断
1 var b = [1, 2, 3]; 2 console.log(b instanceof Array);// true
注意: 2.3 2.4仅限于判断复杂数据(对象)类型,对于基本数据类型不能使用这样的判断方法。
1 var a = 123; 2 var b = new Number(123); 3 console.log(a instanceof Number); // false 4 console.log(b instanceof Number); // true
3、初始化对象的方法
3.1 new 关键词
函数通过new 关键词,实例化的对象都是object的类型的“泛型”,即自定义的类型。
1 var a = new Object(); 2 var b = new String('123'); 3 var c = String('123'); 4 console.log(typeof a); //object 5 console.log(typeof b); //object 6 console.log(typeof c); //string
代码示例中, a b 均为对象类型,类似于Java中的Object, 而通过构造函数String()定义的只是普通的字符串类型。这就同样可以解释new Function() 和 Function()的区别了。
3.2 对象字面量
对象字面量定义对象其实就是定义了一个json格式的对象。它不需要实例化,而是在代码解析完后直接以对象的数据格式存入到了内存中,因此它的存储效率更高。
1 var a = { 2 0 : 1, 3 1 : 0, 4 a : 10, 5 b : function(){ 6 alert(a.a); 7 } 8 } 9 console.log(typeof a);// object
4、总结
通过本文的学习和之前几章的研究,相信大家看Javascript这门语言已经不是几个简单的函数了。通过原型链prototype接口我们可以扩展标准对象的方法和继承“类”,如Array.prototype.in_array。通过标准对象的构造函数我们可以直接定义Array("Jack","Marry","Rose");也可以直接扩展为泛型"Object",如new Array("Jack","Marry","Rose")。好了,Javascript拾遗的文章暂且搞一个段落,其实这些文章的深度也只能用来应付面试的,Javascript这门精妙的脚本语言还有很多内容值得我们去思考。不过只要大家通过这些文章能学到一些东西,“笔者”就心满意足了。最后希望大家多提宝贵意见。接下来我要开始学习Linux和C++了,我会记录一些学习笔记和新的项目内容,期待一下吧~