国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

深入剖析JavaScript instanceof 運算符

2024-05-06 15:37:55
字體:
來源:轉載
供稿:網友

instanceof 運算符簡介

在 JavaScript 中,判斷一個變量的類型嘗嘗會用 typeof 運算符,在使用 typeof 運算符時采用引用類型存儲值會出現一個問題,無論引用的是什么類型的對象,它都返回 "object"。ECMAScript 引入了另一個 Java 運算符 instanceof 來解決這個問題。instanceof 運算符與 typeof 運算符相似,用于識別正在處理的對象的類型。與 typeof 方法不同的是,instanceof 方法要求開發者明確地確認對象為某特定類型。例如:

清單 1. instanceof 示例

var oStringObject = new String("hello world"); console.log(oStringObject instanceof String); // 輸出 "true"

這段代碼問的是“變量 oStringObject 是否為 String 對象的實例?”oStringObject 的確是 String 對象的實例,因此結果是"true"。盡管不像 typeof 方法那樣靈活,但是在 typeof 方法返回 "object" 的情況下,instanceof 方法還是很有用的。

instanceof 運算符的常規用法

通常來講,使用 instanceof 就是判斷一個實例是否屬于某種類型。例如:

清單 2. instanceof 常規用法

// 判斷 foo 是否是 Foo 類的實例function Foo(){} var foo = new Foo(); console.log(foo instanceof Foo)//true

另外,更重的一點是 instanceof 可以在繼承關系中用來判斷一個實例是否屬于它的父類型。例如:

清單 3. instanceof 在繼承中關系中的用法

// 判斷 foo 是否是 Foo 類的實例 , 并且是否是其父類型的實例function Aoo(){} function Foo(){} Foo.prototype = new Aoo();//JavaScript 原型繼承var foo = new Foo(); console.log(foo instanceof Foo)//true console.log(foo instanceof Aoo)//true

上面的代碼中是判斷了一層繼承關系中的父類,在多層繼承關系中,instanceof 運算符同樣適用。

你真的了解 instanceof 操作符嗎?

看了上面的代碼示例,是不是覺得 instanceof 操作符很簡單,下面來看點復雜的用法。

清單 4. instanceof 復雜用法

console.log(Object instanceof Object);//true console.log(Function instanceof Function);//true console.log(Number instanceof Number);//false console.log(String instanceof String);//false console.log(Function instanceof Object);//true console.log(Foo instanceof Function);//true console.log(Foo instanceof Foo);//false

看了上面的代碼是不是又暈頭轉向了?為什么 Object 和 Function instanceof 自己等于 true,而其他類 instanceof 自己卻又不等于 true 呢?如何解釋?要想從根本上了解 instanceof 的奧秘,需要從兩個方面著手:1,語言規范中是如何定義這個運算符的。2,JavaScript 原型繼承機制。

詳細剖析 ECMAScript-262 edition 3 中 instanceof 運算符的定義

語言規范對中 instanceof 運算符的定義如下:

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 广德县| 阿图什市| 大英县| 焦作市| 金昌市| 尼勒克县| 湖北省| 桐乡市| 霍山县| 交口县| 张家界市| 潮安县| 油尖旺区| 和顺县| 赤峰市| 姚安县| 织金县| 德格县| 沁阳市| 焉耆| 久治县| 酒泉市| 团风县| 高阳县| 枣阳市| 新宾| 平顶山市| 凌云县| 英超| 平陆县| 明星| 镇原县| 仁怀市| 宣汉县| 巧家县| 临高县| 囊谦县| 彭阳县| 河间市| 兴山县| 兴山县|