在 javascript 中,預設內建了一些基本的函式建構子(function constructors)
我們可以透過這些函式建構子建立相關物件,並且繼承此函式的原型(prototype)方法。
PS. 但他們型別會與原生值不同,因此還是建議不要使用,以免混淆原生值與物件。
[javascript] var a=new Number(10); console.log(typeof a); console.log(Number.prototype); // object // Number 函式的原型(prototype)方法 var str=new String(“QQ”); console.log(typeof str); console.log(String.prototype); // object // String 函式的原型(prototype)方法 // 新增新的方法 String.prototype.hello=function(){ console.log(“hello”); }; “test”.hello(); // hello [/javascript]
上面這段程式碼可以看到,使用內建的 Number 及 String 函式建構子可以繼承原函式的原型(prototype)方法,也可以自行再新增原型方法。(注意,若新增的原型方法名稱與內建相同則會覆蓋掉)
最後,建議大家還是不要使用內建的函式建構子去建立原生值,讓我們看看為什麼
[javascript] var a=10; var b=new Number(10); console.log(a==b); console.log(a===b); console.log(typeof a+” “+typeof b); // true // false // number object [/javascript]
使用函式建構子與原生值的型態會不相同,並且很有可能造成一時無法分辨錯誤。
參考資料: https://pjchender.blogspot.tw/2016/06/javascriptfunction-constructors.html