2017-12-07 9 views
1

あまりにも曖昧なことを聞​​いて叩かれるかもしれないので、間違いなく間接的な戦争ではなく、メタプログラミングの質問として解釈してください。JavascriptのArray Method valueOfの目的は何ですか?

JavaScriptの配列をもう少し深く理解しようとすると、私はthis W3 referenceArray.valueOfとして見つけました。

単に言う:

のvalueOf()メソッドは、配列を返します。

このメソッドは、配列オブジェクトのデフォルトメソッドです。 Array.valueOf()は配列と同じを返します

注::このメソッドは元の配列を変更しません。


だから、私は尋ねる:ポイントは何ですか? Array.valueOf()メソッドを使用する理由はありますか?callまたはapplyを使用する場合など、いくつかのより複雑な構成で便利ですか?機能を一緒に配管するのに役立ちますか?これは単に関連するvalueOfがより有用な他のオブジェクトと比較して標準的な方法を作成するためです。したがって、Arrayを他のオブジェクトに一般化するのに役立ちますか?

私が言うことができる限り、それはまったく同じなので、その価値はわかりません。

+2

'Object.prototype'に' valueOf'がありませんか? –

+1

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/valueOfから継承されますか? – Li357

+0

W3を解雇!それはあなたのために悪いです –

答えて

4

このメソッドはObject.prototypeから継承されています。 Object.prototypeの下にあるすべてのオブジェクトにはそれがあります。プリミティブラッパーは、それをオーバーライドして対応するプリミティブを返します。たとえば、new Number(5)5に変換します。デフォルトの実装は、オブジェクトをそのまま返します。プリミティブ値にオブジェクトを変換するvalueOfメソッドをコールするJavaScript

。 valueOfメソッドを自分で呼び出す必要はほとんどありません。 JavaScriptは、プリミティブ値が期待されるオブジェクトに遭遇したときに、自動的にそれを呼び出します。

+0

あなたは '.valueOf'をハイジャックしていくつかの[クレイジーなこと](http://2ality.com/2011/12/fake-operator-overloading.html?m=1)をすることができます。 –

+4

"Object.protoype'から継承しない' Object.create(null) 'のようなものを除いて" *すべてのオブジェクトには*があります ":-) – Bergi

関連する問題