2016-11-07 3 views
0

なぜObject.applyは同じ、オブジェクトにそれを使用できるケースがないときに、コンソールでObject.applyが表示されるのはなぜですか?

enter image description here

のためのユースケースが存在しないときに関数を呼び出している間、我々は法を適用使うだけの時間があるコンソールの提案であります。

mdn's js Object referenceにも記載されていません。 関数のプロトタイプがmdnにあります。

オブジェクトを使用しているときに適用を使用できるケースがある場合は、私にお知らせください。

+1

Applyは関数のプロパティで、 'Object'は関数です。したがって適用が利用可能です。 'Typeof(Object)'を試してください – Rajesh

+1

あなたが気づいたら 'typeof(Object)'は "function"です。したがって、Function.prototypeにはすべてのメソッドがあります(call、applyなど)。 また、私も 'Object.apply'を使用する必要はありません。 – vothaison

+0

@Vothaison、このコメントを回答として追加してください。 –

答えて

2

Objectは関数であり、関数はapplyメソッドを持っています。 F.apply(this, [x, y, z])(最初の引数はthis関数内の値となる)としてFが関数である場合言い換えると、コールに関数を適用呼び出すすべての関数のよう

console.log(Object.constructor === Function); 

は次にF(x, y, z)は同じです。スペックから

JavaScriptで(セクション19)Object(すなわち、最初はグローバルオブジェクトに名前「オブジェクト」にバインドされているもの)オプションの引数xとして呼び出すことができるコンストラクタです。

  • NewTargetundefinedでもアクティブな機能でもない場合は、 return OrdinaryCreateFromConstructor(NewTarget, "%ObjectPrototype%")です。つまり、new Object()を呼び出すことは、({})と同じです。

  • 値がnull,undefinedの場合は、ObjectCreate(%ObjectPrototype%)を返します。つまり、Object(undefined)またはObject(null)newなし)を呼び出すと、({})と書いて新しい標準オブジェクトを作成するようなことになります。

  • 他の場合はToObject(value)を返します。これは、Object(x)がオブジェクトへの変換を呼び出すことを意味します。たとえばObject(42)はボックス化された数値を返しますが、xが既にオブジェクトの場合はObject(x)===xとなります。 IMO Object.applyを呼び出す

は(おそらくもののこの種を触れることなく、すべてのあなたの人生のための幸せな生産性のJavaScriptプログラマ可能)Javascriptのプログラムに非常に頻繁に起こっていません。

+0

Object.applyの使用例を教えてください。 –

0

お気づきの場合、typeof(Object)は "function" - >関数です。 したがって、Function.prototypeのすべてのメソッド(callapplybindなど)があります。

私もObject.applyを使用する必要はありません。

0

Objectコンストラクタは、典型的には、オブジェクトにプリミティブを変換するために使用される:

1 instanceof Number // false 

しかし

Object(1) instanceof Number // true 

(非常に人工的なものの)が可能なの最初の要素を変換されるObject.applyのケースを使用オブジェクトへのプリミティブの配列

var singletonArray = ['foo']; 
var foo = Object.apply(null, singletonArray); 
// foo is an Object 
// (foo instanceof String) === true 

これは非常に有用であるが、Objectため.apply方法は例外が、ルールはない有する関数でなくてもよいです。

関連する問題