国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

JavaScript中的數據類型及其檢測

Bryan / 1466人閱讀

摘要:中的數據類型及其檢測數據類型基本類型引用類型類型檢測只能檢測基本數據類型,對于還有一個用于檢測某個對象的原型鏈是否包含某個構造函數的屬性適用于檢測對象,它是基于原型鏈運作的屬性返回一個指向創建了該對象原型的函數引用,該屬性的值是哪個函數本身

JavaScript中的數據類型及其檢測 1. 數據類型 1.1 基本類型

Number

String

Boolean

Null

Undefined

Symbol

1.2 引用類型

Object

Array

Function

RegExp

Date

2. 類型檢測 2.1 typeof
var s = "Nicholas";
var b = true;
var i = 22;
var u;
var n = null;
var o = new Object();
var f = new Function();

console.info(typeof s);     // string
console.info(typeof b);     // boolean
console.info(typeof i);     // number
console.info(typeof u);     // undefined
console.info(typeof n);     // object
console.info(typeof o);     // object
console.info(typeof f);     // function

typeof只能檢測基本數據類型,對于null還有一個Bug

2.2 instanceof

result = variable instanceof constructor
instanceof用于檢測某個對象的原型鏈是否包含某個構造函數的prototype屬性

function C() {}
function D() {}
var o = new C();
o instanceof C     // true, Object.getPrototypeOf(o) === C.prototype
o instanceof D     // false

function Animal() {}
function Cat() {}
Cat.prototype = new Animal();
var b = new Cat();
b instanceof Animal     // true

[1, 2, 3] instanceof Array      // true
/abc/ instanceof RegExp     // true
({}) instanceof Object      // true
(function() {}) instanceof Function     // true

instanceof適用于檢測對象,它是基于原型鏈運作的

2.3 constructor

constructor屬性返回一個指向創建了該對象原型的函數引用,該屬性的值是哪個函數本身。

function Animal() {}
function Cat() {}
function BadCat() {}
Cat.prototype = new Animal();
BadCat.prototype = new Cat();
var a = new Animal();
a.constructor === Animal    // true
var b = new BadCat();
b.constructor === Animal    // true

constructor指向的是最初創建者,而且易于偽造,不適合做類型判斷

2.4 toString
Object.prototype.toString.call();
({}).toString.call();
window.toString.call();
toString.call();
Object.prototype.toString.call([]);     // [object Array]
Object.prototype.toString.call({});     // [object Object]
Object.prototype.toString.call("");     // [object String]
Object.prototype.toString.call(new Date());     // [object Date]
Object.prototype.toString.call(1);      // [object Number]
Object.prototype.toString.call(function () {});     // [object Function]
Object.prototype.toString.call(/test/i);    // [object RegExp]
Object.prototype.toString.call(true);       // [object Boolean]
Object.prototype.toString.call(null);       // [object Null]
Object.prototype.toString.call();       // [object Undefined]

幾乎十全十美,只是不能檢測用戶自定義類型

2.5 小結

typeof只能檢測基本數據類型,對于null還有Bug

instanceof適用于檢測對象,它是基于原型鏈運作的

constructor指向的是最初創建者,而且容易偽造,不適合做類型判斷

toString適用于ECMA內置JavaScript類型(包括基本數據類型和內置對象)的類型判斷

基于引用判等的類型檢查都有跨窗口問題,比如instanceofconstructor

如果你要判斷的是基本數據類型或JavaScript內置對象,使用toString;如果要判斷的是自定義類型,請使用instanceof

參考

w3cPlus - JavaScrit的變量:如何檢測變量類型

JavaScript高級程序設計(第3版)

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/90905.html

相關文章

  • JavaScript數據類型及其檢測

    摘要:值的比較只進行值的比較會進行數據類型的轉換。只要在當前實例的原型鏈上,我們用其檢測出來的結果都是。但檢測與不一樣,還可以處理基本數據類型的檢測。 showImg(https://segmentfault.com/img/remote/1460000016733921); 一、JavaScript有幾種類型的值? Javascript有兩種數據類型,分別是基本數據類型和引用數據類型。其中...

    starsfun 評論0 收藏0
  • JavaScript數據類型及其檢測

    摘要:值的比較只進行值的比較會進行數據類型的轉換。只要在當前實例的原型鏈上,我們用其檢測出來的結果都是。但檢測與不一樣,還可以處理基本數據類型的檢測。 showImg(https://segmentfault.com/img/remote/1460000016733921); 一、JavaScript有幾種類型的值? Javascript有兩種數據類型,分別是基本數據類型和引用數據類型。其中...

    dingding199389 評論0 收藏0
  • JavaScript數據類型及其檢測

    摘要:值的比較只進行值的比較會進行數據類型的轉換。只要在當前實例的原型鏈上,我們用其檢測出來的結果都是。但檢測與不一樣,還可以處理基本數據類型的檢測。 showImg(https://segmentfault.com/img/remote/1460000016733921); 一、JavaScript有幾種類型的值? Javascript有兩種數據類型,分別是基本數據類型和引用數據類型。其中...

    Moxmi 評論0 收藏0
  • javascript之關鍵字,保留字, 變量及數據類型

    摘要:之關鍵字保留字變量及數據類型個人總結,分享也供自己日后查詢變量中變量通過關鍵字來聲明的。在使用聲明變量但未對其加以初始化時,這個變量的值就是,例如在控制臺輸出是也就是未定義類型布爾類型該類型只有兩個字面值和。 javascript之關鍵字,保留字, 變量及數據類型 個人總結,分享也供自己日后查詢 1.變量 javascript 中變量通過var關鍵字(variable)來聲明的。 變量...

    stormgens 評論0 收藏0

發表評論

0條評論

Bryan

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<