可以查找到的資料都說"Javascript的instanceof操作符可以用來比較兩個操作數(shù)的構造函數(shù)constructor"。例如:細說JavaScript(三)我在實際中卻被搞糊涂了,請看如下代碼:functionO2(aa,bb){varaa=aa;this.bb=bb;}//1、正常情況varo2=newO2("a2","b2");console.log(o2instanceofO2);//true//2、修改了構造函數(shù)的原型對象varo4=newO2("a4","b4");O2.prototype={};console.log(o4instanceofO2);//false//3、修改了構造函數(shù)原型對象的constructor屬性varo6=newO2("a6","b6");O2.prototype.constructor=Object;console.log(o6instanceofO2);//true問題來了:為什么2中可以導致false,而3中修改了構造函數(shù)原型對象的constructor屬性卻還是可以判斷為true呢?說好的以constructor為依據(jù)呢?新問題來了:我在o4處已經(jīng)改了O2.prototype={};所以o4返回了false為什么varo6=newO2("a6","b6");之后,o6又成了true呢?原型被o4處修改之后,原型對象不就永久改變了么?
JavaScript中instanceof到底是以什么為依據(jù)呢?
慕慕森
2019-04-19 16:11:45