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

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

 

深入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++了,我会记录一些学习笔记和新的项目内容,期待一下吧~

转载于:https://www.cnblogs.com/keaixiaoye/p/Javascript.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值