JavaScript的類型
JavaScript 是一門弱類型的編程語言,其一共有6中數(shù)據(jù)類型
1.Number 數(shù)值類型
2.String 字符串類型
3.Boolean 布爾類型
4.undefined 未定義類型
5.null 空值
6.object 對象類型
在JavaScript 中的比較操作
在JavaScript中存在兩種比較操作分別是
==
和===
兩個的區(qū)別在于===
不會做默認的類型轉(zhuǎn)換,會比較兩個值的類型是否一致,當然對于object類型的值==
和===
是一樣的,兩者都是比較object類型的引用是否為同一個對象 (Array也是obejct類型)
References : Stack Overflow 回答
如何判斷JavaScript的數(shù)據(jù)類型
JavaScript 提供了typeof 函數(shù)來返回數(shù)據(jù)類型,但是typeof操作符的返回值有時候是不準確的.
例如typeof new Number(1) # object
針對上面的情況,我們可以使用
toString()函數(shù)來返回數(shù)據(jù)的真正對象
var mytypeof = function (o) {
var s = Object.prototype.toString.call(o);
return s.match(/\[object (.*?)\]/)[1].toLowerCase();
}
mytypeof({}); // "object"
mytypeof([]); // "array"
mytypeof(5); // "number"
mytypeof(null); // "null"
mytypeof(); // "undefined"
mytypeof(/abcd/); // "regex"
mytypeof(new Date()); // "date"
但是JavaScript中還有兩個比較特殊的類型 NaN, Array,針對這兩個類型我們可以使用
isNaN
和Array.isArray
來檢測其類型
PS:typeof 操作符一般可以用來判斷某個值或函數(shù)是否存在
JavaScript 是面向?qū)ο蟮木幊陶Z言,JavaScript是通過原型鏈做繼承的,當我們想要檢測自定義的對象,或者對象的繼承關(guān)系的時候.
這個時候應(yīng)該使用instanceof
操作符(instanceof 只能用于檢測object類型的值).這個函數(shù)是通過構(gòu)造函數(shù)的prototype來檢測對象的類型的
function Super(age){
this.name = "lsh";
this.age = age;
}
Super.prototype.sayName = function (){
console.log(this.name);
}
function Sub(){
Super.call(this,99);
}
Sub.prototype = new Super;
Sub.prototype.constructor = Sub;
Sub.prototype.hello = function (){
console.log(this.age);
}
var s = new Super();
var n = new Sub();
console.log(n instanceof Sub);
console.log(n instanceof Super);