1、判斷left
,right
是不是在一條原型鏈上
2、首先需要知道的是原型鏈,每個建構函式都有乙個prototype
屬性,指向它的原型物件,同時這個建構函式具備,乙個constructor
屬性,它指向的是它的建構函式
3、通過建構函式new
乙個例項,這個例項會具有__proto__
屬性,指向的是這個建構函式的原型物件
4、instanceof
就是實現,判斷兩個例項是否在一條原型鏈上
5、首先我們需要找到這條原型鏈上的原型物件
6、left表示的是乙個例項,而right
表示的是構造這個例項的建構函式
7、let proto = left.__proto__
,這樣就可以找到這個例項的原型物件
8、然後我們要找到的是建構函式的原型物件
9、let prototype = right.prototype
,這樣就可以找到這個建構函式的原型物件
10、如果例項和建構函式的原型物件相同的話,那麼,他們就是在一條原型鏈上
11、讓proto = proto.__proto__
如果找不到原型物件,就一直往下找,
如果例項的原型物件為空的話,那麼返回false
,
12、如果例項和建構函式的原型物件相等,那麼返回true
**實現:輸出結果是true
function
instanceof
(left,right)
}let arr =[1
,2,3
,4]console.
log(
instanceof
(arr,array)
)
記錄乙個statck overflow
工作中遇到一次這樣的問題 棧上的空間不夠用了,導致stack overflow,程式crash,並且coredump被寫亂了。這裡用小例子,記錄這樣的問題。include include include include define stack buffer size 10240 void thre...
記錄乙個BUG
vm版本 kali版本 centos 8 版本 vmtool版本 新裝的centos8 因為無法拖拽檔案到虛擬機器中,就重新裝了一下vmtool,安裝之後還是不行,開啟kali發現原本裝好的vmtool,現在也不能拖拽檔案了,就又在kali重灌了一次,還是不能拖拽,上網查了一下,在執行.vmware...
記錄乙個 lll lock wait
乙個dba同事昨天在執行乙個命令列工具的時候發現程式hang住,問題挺有意思,值得記錄下。首先用pstack看了下程式的呼叫棧,這是個多執行緒程式,pstack結果看到幾乎所有的執行緒都等在write呼叫上。如下是pt pmp的輸出結果 tue may 27 18 30 06 cst 2014 55...