JSは数字に拡張方法を追加します.
1168 ワード
拡張方法は原生タイプへの添加方法で、対象をより便利にすることです.JSは動的言語として、プロトタイプチェーンを少し修正すれば既存の種類に追加することができます.
まず、どのようにArayに拡張方法を追加するかを思い出してください.
そして、私たちはjsのarrayにgetを呼び出すことができます.
これらは多くの人がすでに知っていると信じていますが、私は以前に純粋な数字に開拓方法を追加する方法を見つけていませんでした.例えば、いくつかの現代語にはこのような10.timesがあります.
jsには確かにデジタルタイプの原型があります.それは包装対象のNumberです.しかし、方法を加えると直接に呼び出すのは問題があります.実はjsには基本タイプがないので、呼び出しは全部包装タイプに任せています.jsと他のいくつかの動態言語の違いが見られます.例えばrubyには基本タイプがありません.すべてのものが対象です.
今日まで、jsのいくつかの問題を復習する時またこのものを思い出して、突然ただjs仮想マシンの内部の論理の問題だけかもしれないと感じて、それからプラスしてみて、このように基本的なタイプの数字を包装のタイプに転化することができるかどうかを考えてみて、意外にもなって、ここで記録します.
まず、どのようにArayに拡張方法を追加するかを思い出してください.
Array.prototype.get=function (index) {
return this[index]
}
このようにarrayにget方法を追加しました.この方法はあまり意味がなくて、ただモデルとして使っています.そして、私たちはjsのarrayにgetを呼び出すことができます.
console.log([1,2,3].get(1))// 2
これらは多くの人がすでに知っていると信じていますが、私は以前に純粋な数字に開拓方法を追加する方法を見つけていませんでした.例えば、いくつかの現代語にはこのような10.timesがあります.
jsには確かにデジタルタイプの原型があります.それは包装対象のNumberです.しかし、方法を加えると直接に呼び出すのは問題があります.実はjsには基本タイプがないので、呼び出しは全部包装タイプに任せています.jsと他のいくつかの動態言語の違いが見られます.例えばrubyには基本タイプがありません.すべてのものが対象です.
//
Number.prototype.times=function (fun) {
for(var i=0;iconsole.log(i))
//
var a=new Number(10)
// 0-9
a.times(i=>console.log(i))
数字と違って、stringも基本タイプですが、この問題はありません.拡張方法を追加したら、直接「xxx」とdoSth()でいいです.今日まで、jsのいくつかの問題を復習する時またこのものを思い出して、突然ただjs仮想マシンの内部の論理の問題だけかもしれないと感じて、それからプラスしてみて、このように基本的なタイプの数字を包装のタイプに転化することができるかどうかを考えてみて、意外にもなって、ここで記録します.
// 0-9
(10).times(i=>console.log(i))