2017-11-25 6 views
2

で構築オブジェクト:stuffがオブジェクトであるJavaScriptは:私は、次のようなものでいくつかのコードを見ているオブジェクトパラメータ

var thing=Object(stuff); // stuff is an object 

(この種のコードはMozillaのウェブサイトObject.assignのpolyfillにあります)。

Mozillaのドキュメントは、パラメータがオブジェクトの場合の意味を特定するものではありません。

私が知る限り、新しいオブジェクトは元のオブジェクトへの参照です。

var thing=stuff; // stuff is an object 

二つの違いは何ですか:あなたは、単に書いた場合、私はあなたが同じになるだろうと思いましたか?

編集

私はそれを言う必要がありますか?これはではなく、です。Object.assignについての質問です。それはObjectコンストラクタの使用に関する質問です。

+0

'stuff'がオブジェクトの場合、実際には違いはありません。ポイントは、 'stuff'は必ずしもオブジェクトではないということです。 – Bergi

答えて

-1

Object.assignのpolyfillでは、一度に複数のオブジェクトをマージすることができます。 新しいオブジェクトを作成する際のポイントはtrueですが、ユースケースが異なります。

は、我々は3つのオブジェクトを持っており、我々はそれらをマージしたい考えてみましょう:リテラルとオブジェクト間の

const a = { 'key1': 'value1' }; 
const b = { 'key2': 'value2', 'key3': 'this will get replaced' }; 
const c = { 'key3': 'value3' }; 

// Using Object.assign 
const abc = Object.assign(a, b, c); 
// abc will have the value {key1: "value1", key2: "value2", key3: "value3"} 
+0

es5を使用している場合は、constの構文エラーが発生します。 es5の場合はvarに変更します。シンタックスエラーはありません。 –

+0

今すぐお試しください。カンマをごめんね。 –

+1

@BrijeshBhakta私はその問題に対処するとは思わない。私は「オブジェクト」を知っている。私がコードを見た場所はpolyfillだと言いました。問題は、オブジェクト・コンストラクタをオブジェクト・パラメータとともに使用する目的は何ですか?ところで、私はあなたのオブジェクト 'a'が定数であれば問題があるかもしれないと思います。 'Object.assign'は対象オブジェクトを変更することになっています。 – Manngo

0

差() -

Objectコンストラクタは、与えられた値のオブジェクトラッパーを作成します。 値がnullまたは未定義の場合は、空の オブジェクトを作成して返します。そうでない場合は、与えられた値に に対応するTypeのオブジェクトを返します。値が既にオブジェクトの場合は、値 を返します。

コンストラクタ以外のコンテキストで呼び出された場合、Objectは新しいObject()に対して同じように動作します( )。 - あなたがオブジェクトを使用する場合は from MDN

、あなたは任意の値を挿入して、新しいオブジェクトを取得していますが、オブジェクトの引数としてオブジェクトを使用している場合 - あなたは、このオブジェクトへのリンクを取得することができます。 stuffがオブジェクトである場合、例えばSTUFが数値である場合、var thing=Object(stuff);var thing=stuff;は他、等価である:

var thing=Object(stuff); ---オブジェクト。

var thing=stuff; --- number;

関連する問題