码迷,mamicode.com
首页 > 编程语言 > 详细

【Javascript 拾遗之六】深入Javascript数据类型和对象类型

时间:2015-01-16 18:29:52      阅读:191      评论:0      收藏:0      [点我收藏+]

标签:

通过前几章的讲解,我们已经摸清楚Javascript的几个重要特征,具有类概念的函数,“函数”实例化的后得到对象, 原型链, 函数的定义等等。作为高级脚本语言的Javascript同样是面向对象的语言,但是Javascript中的数据类型不像JAVA中的“万物皆对象”,本文我们就来深入学习一下Javascript中的几种数据类型及其判断。Let‘s start learning, move it!

 

深入Javascript数据类型

1、5种基本数据类型和1种复杂数据类型

5种基本数据类型包括 : Undefined、Null、Boolean、Number和String。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++了,我会记录一些学习笔记和新的项目内容,期待一下吧~

【Javascript 拾遗之六】深入Javascript数据类型和对象类型

标签:

原文地址:http://www.cnblogs.com/keaixiaoye/p/Javascript.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!