JavaScript学习笔记--理解对象
JavaScript有一句话叫做一切皆对象,这句话看起来就像权力的游戏中Valar Morghulis(凡人皆有一死)一样总有一股哲学味
怎么理解这句话呢?
这里我们用到两个运算符来检测数据的类型,分别是typeof 以及instanceof
1.typeof
typeof运算符接收一个参数,将返回这个参数的类型,typeof的返回值分别为五种基本类型(那个function也是object)
var aNum=213; console.log(typeof aNum); //"number" var aString='abc'; console.log(typeof aString); //'string' var aFn=function(num){ return num+1; } console.log(typeof aFn); //function console.log(typeof null); //object
由于null实际上是一个空对象,所以这里返回object也是合理的
2.instanceof
instanceof用于判断某一个对象是否是所给的构造函数的一个实例,返回值是true或者false
这里要注意的是,对于基本类型(string、number、 boolean等),使用instanceof始终返回false
aNum instanceof Number; //false aString instanceof String; //false //...
对于对象,instanceof返回的总是这个对象所属的构造函数
function A(num){ return num+1; } console.log(a instanceof Function); //true console.log(A instanceof Object); //true var aObj={}; console.log(aObj instanceof Object); //true var aArr=[]; console.log(aArr instanceof Array); //true console.log(aArr instanceof Object); //true
这里有一个问题,为什么A、aArr既是Function、Array的实例,又是Object的实例?
这就是一切皆对象的原理,不论是Function,还是String、Array,在JavaScript中它们都是Object
(本文较为浅显,以后的文章将会更深入的探讨对象以及原型方面的知识)