Javascriptは、組み込みの型とオブジェクトに関しては、少し自由を要するようです。JavascriptのMathとArrayの違いは何ですか?
あなたがこれを行うことができます配列型の内部機能で取得するには:だからここ
> Array().slice
function slice() {
[native code]
}
配列はコンストラクタとして使用されている標準機能のように見えます。 except ... sliceはArray()関数のメンバ関数ではなく、Arrayオブジェクトのメンバ関数です。
アレイについてのもう一つの珍しいものは()、あなたが新しい()かないでそれを呼び出すかどうかをArrayオブジェクトを返すように見えるです:
> var a = Array()
undefined
> a
[]
> a.length
0
> var b = new Array()
undefined
> b
[]
> b.length
0
数学一方、シングルトンオブジェクト内に内蔵されているように見えます常に存在する(つまり、インスタンス化する必要はありません)。ですから、Array()。slice.applyを使ってArrayを使ってMath.min.applyを使います。
私の質問はArray()をあなた自身とJavascriptの他のビルトインオブジェクトを書くコンストラクタとは異なるものにしています。
数学は、少なくともクロム、インスタンスで、あります。 Firefoxではネイティブコードに直接ラップしますが、forループでは使用できません。 –
はい、それは本当に定義されていないと確信しています - 私が意味するものは、それは単なるオブジェクトの性質のイラストです。 – Pointy
@Ivo、 'for-in'ループで' Math'オブジェクトのプロパティを列挙することはできません。それらは**非列挙型**と記述されているからです。例えば、 'Math.propertyIsEnumerable( 'max'); 'false'を生成します – CMS