為什么typeof可以判斷基本類型
是通過存儲的二進制機器碼來判斷的,000為null?和Object;1為整數(shù)于未;010浮點數(shù);100字符串;110布爾值烘浦;-2^30undefined
什么是原型
js的原型繼承模式抖坪,主要是借鑒了java的繼承思想,但是沒有類的定義闷叉,那么對象之間是通過原型鏈實現(xiàn)繼承的擦俐。
通過new命令?調(diào)用構(gòu)造函數(shù),生成實例握侧,this指向新生成的實例
每個對象有一個私有屬性(_proto_)即[[prototype]]對象保存了需要共享的屬性和方法蚯瞧,該對象有一個constructor屬性,指向該對象實例的構(gòu)造函數(shù)
每一個函數(shù)都有一個prototype屬性?指向函數(shù)的原型對象品擎,而原型對象又有constructor屬性?指向這個函數(shù)
instanceof?和?isPrototypeOf
A instanceof B? 判斷B.prototype?是否在A的原型鏈上? 也用于判斷為A是B的實例萄传,原理甚颂?
B.isPrototypeOf(A) 判斷B對象是否在A的原型鏈上? (P.prototype.isPrototypeOf(c))
如果有A.prototype.isPrototypeOf(a)說明?A的原型在a的原型鏈(_proto_)上,那么必然有 a._proto_指向A.prototype盲再,即a instanceOf A成立
為什么Function?instanceOf Object?同時?Object?instanceOf?Function成立
參考:https://blog.csdn.net/haishangfeie/article/details/80025471
其中Function.prototype和Object.prototype是內(nèi)置對象西设,function Function?的_proto_和prototype都指向Function.prototype,function Object的_proto_指向Function.prototype?而上一層的_proto_指向Object.prototype答朋,最后指向null贷揽。所以有Function?instanceOf Object?和Object instanceOf Function?成立。
父類繼承
對象繼承
淺拷貝和深拷貝
判定對象類型?繼承關(guān)系typeof instanceof constructor
實例對象的_proto_指向構(gòu)造函數(shù)的原型