标签:
通过前几章的讲解,我们已经摸清楚Javascript的几个重要特征,具有类概念的函数,“函数”实例化的后得到对象, 原型链, 函数的定义等等。作为高级脚本语言的Javascript同样是面向对象的语言,但是Javascript中的数据类型不像JAVA中的“万物皆对象”,本文我们就来深入学习一下Javascript中的几种数据类型及其判断。Let‘s start learning, move it!
5种基本数据类型包括 : Undefined、Null、Boolean、Number和String。1种复杂数据类型: Object ,包含8种标准对象类型: Function、Number、Math、 String、 Date、Array、Boolean 和 RegExp 。Javascript 支持自定义的Object类型。是不是很丰富,哈哈,够搞一辈子的。Javascript 是弱类型的语言,也就是在代码中可以隐式转换类型。
判断对象类型我们首先想到的是typeof, 同样typeof也是比较靠谱的一种比较方法。
用法: typeof 表达式
习惯上我们一般用这样的判断写法: typeof x === ‘undefined‘ ?...
1 var a = ‘‘ + 123; 2 console.log(typeof a === ‘string‘); //true
用三个等号 “===” 可以判断两个表达式的类型和值是否相等。等同于 a == b && typeof a === typeof b
1 var a = ‘‘ + 123; 2 var b = 123; 3 console.log(a === b); //false
同样我们可以用constructor属性判断类型。
1 var b = [1, 2, 3]; 2 console.log(b.constructor === Array); // true
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
函数通过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()的区别了。
对象字面量定义对象其实就是定义了一个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
通过本文的学习和之前几章的研究,相信大家看Javascript这门语言已经不是几个简单的函数了。通过原型链prototype接口我们可以扩展标准对象的方法,如Array.prototype.in_array。通过标准对象的构造函数我们可以直接定义Array("Jack","Marry","Rose");也可以直接扩展为泛型"Object",如new Array("Jack","Marry","Rose")。好了,Javascript拾遗的文章暂且搞一个段落,其实这些文章的深度也只能用来应付面试的,Javascript这门精妙的脚本语言还有很多内容值得我们去思考。不过只要大家通过这些文章能学到一些东西,“笔者”就心满意足了。最后希望大家多提宝贵意见。接下来我要开始学习Linux和C++了,我会记录一些学习笔记和新的项目内容,期待一下吧~
【Javascript 拾遗之六】深入Javascript数据类型和对象类型
标签:
原文地址:http://www.cnblogs.com/keaixiaoye/p/Javascript.html