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

(本文較爲淺顯,之後的文章將會更深刻的探討對象以及原型方面的知識)

相關文章
相關標籤/搜索