記錄 實現乙個instanceOf

2021-10-23 16:20:10 字數 1065 閱讀 1915

1、判斷leftright是不是在一條原型鏈上

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...