我發現使用Array.prototype.filter
方法刪除字符串中的所有非數字的這種冷靜的方式,但我不能完全肯定它是如何使用Number
原型來實現這一點:Array.prototype.filter(Number)中的'Number'如何工作?
var arr = '75number9';
arr.split(/[^\d]/).filter(Number); // returns [75, 9]
當我檢查typeof Number
我得到返回'function'
。這裏發生了什麼?
再加上我的困惑是,如果我用String
替換Number
,結果是一樣的。它仍然有效!
arr.split(/[^\d]/).filter(String); // returns [75, 9]
Array
和Object
作爲參數,而另一方面,返回此:
["75", "", "", "", "", "", "9"]
很好奇,想明白這一點!
某些類型可以是函數。 ['函數對象(用ECMA-262術語實現[[Call]] \t「function」'](https://developer.mozilla。org/en-US/docs/Web/JavaScript/Reference/Operators/typeof) – 13ruce1337
@ 13ruce1337:所有的「types」都是函數,因爲在javascript中一個類和一個構造函數是一個也是一樣的 – Eric
@Eric我只是打破了我的大腦在幾秒鐘前認爲...感謝您的確認。 – 13ruce1337