JavaScript学习笔记--理解对象

JavaScript有一句话叫作一切皆对象,这句话看起来就像权力的游戏中Valar Morghulis(凡人皆有一死)同样总有一股哲学味函数

怎么理解这句话呢?spa

这里咱们用到两个运算符来检测数据的类型,分别是typeof 以及instanceofcode

1.typeof对象

typeof运算符接收一个参数,将返回这个参数的类型,typeof的返回值分别为五种基本类型(那个function也是object)blog

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.instanceofip

instanceof用于判断某一个对象是不是所给的构造函数的一个实例,返回值是true或者false原型

这里要注意的是,对于基本类型(string、number、 boolean等),使用instanceof始终返回falsestring

aNum instanceof Number;        //false
aString instanceof String;        //false
//...

对于对象,instanceof返回的老是这个对象所属的构造函数io

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

(本文较为浅显,之后的文章将会更深刻的探讨对象以及原型方面的知识)

相关文章
相关标签/搜索