簡說JS中的instanceof

2021-09-29 14:42:27 字數 1759 閱讀 3849

instanceof操作符在mdn上的解釋為:定義instanceof運算子用於測試建構函式的prototype屬性是否出現在物件的原型鏈的任何位置

1、作用:判斷乙個引用是否屬於某建構函式或在繼承關係中判斷乙個例項是否屬於他的父型別。

2、判斷邏輯:從當前引用的proto一層一層順著原型鏈往上找,看能否找到對應的prototype。

3、使用方法:object instanceof constructor。

object指的是需要測試的物件,constructor指的是建構函式。判斷object的原型鏈上是否有constructor.prototype。如果object是constructor的乙個例項,就返回true;否則返回false。

4、實現instanceof:

function _instanceof(obj,fun)

if(f === obj)

obj = obj._proto_;

}}

5、與typeof的異同之處

相同點:都可以判斷變數型別

不同點:instanceof只能判斷物件、函式和陣列,不能判斷字串和數字等;而typeof可用於判斷乙個表示式的原始值。 

6、栗子們

//未發生繼承

function f(){};

function h(){};

var f = new f();

var h = new h();

console.log(f instanceof f); //true

console.log(f instanceof h); //false

console.log(f instanceof object); //true

console.log(f.prototype instanceof object); //true

console.log(h instanceof f); //false

console.log(h instanceof h); //true

console.log(h instanceof object); //true

console.log(h.prototype instanceof object); //true

//發生繼承

function f(){};

function h(){};

f.prototype = new h();

var f = new f();

console.log(f instanceof f); //true

console.log(f instanceof h); //true

console.log(f instanceof object); //true

console.log(f.prototype instanceof object); //true

console.log(h instanceof f); //false

console.log(h instanceof h); //true

console.log(h instanceof object); //true

console.log(h.prototype instanceof object); //true

instanceof與原型和原型鏈聯絡緊密,若要搞清楚其中底層原理,可先參考下篇,再回頭看此篇,就容易多了。

在js中 typeof和instanceof的區別

typeof與instanceof都是用來判斷資料型別的,返回值是否為空等情況,但是他們具體的情況該如何區分?1.首先兩者返回的值不同。typeof返回的值是乙個字串,而,instanceof返回的是布林型別的值,判斷是true或者false。typeof返回的型別有 number,boolean,...

你真的了解Java中的Instanceof嗎?

instanceof 是乙個簡單的二元操作符,它是用來判斷乙個物件是否是乙個類例項的 boolean b1 sting instanceof object b1為true因為string是object的子類 boolean b2 new string instanceof string b2為tru...

你真的了解Java中的Instanceof嗎?

instanceof 是乙個簡單的二元操作符,它是用來判斷乙個物件是否是乙個類例項的 boolean b1 sting instanceof object b1為true因為string是object的子類 boolean b2 new string instanceof string b2為tru...