3

Nodejs での Object.create の動作は、FireFox とは異なります。

次のようなオブジェクトを想定します。

objDef = {
  prop1: "Property 1"
}

obj = {
  prop2: "Property 2"
}

var testObj = Object.create(obj, objDef);

上記の JavaScript は Mozilla で完全に動作します。基本的に、Object.create に渡される 2 番目の引数を使用してデフォルト値を設定します。

しかし、これはノードでは機能しません。私が得るエラーはですTypeError: Property description must be an object: true

これをノードで機能させるにはどうすればよいですか? 基本的に、デフォルト値でオブジェクトを作成したいと考えています。

4

3 に答える 3

7

2 番目のパラメーターは、プロパティ名をオブジェクトであるプロパティ記述子にマップする必要があります。

MDN に示されている例を参照してください。

https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Object/create#Using_%3CpropertiesObject%3E_argument_with_Object.create

次のようなものを使用して解決できます。

objDef = {
    prop1: {
        value: "Property 1"
    }
}
于 2013-01-13T03:19:04.183 に答える
6

の 2 番目のパラメーターObject.create(proto [, propertiesObject ])は、プロパティ記述子オブジェクトである必要があります

プロパティ記述子の構造については、 https ://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Object/defineProperty で説明しています。

これにより、列挙と変更の両方が可能なデフォルト値を持つプロパティが作成されます。

Object.create(obj, {
    prop1: {
        configurable:true,
        enumerable:true,
        value:"Property 1",
        writable: true
    }
}
于 2013-01-13T03:22:19.350 に答える
0
Object.prototype.test = 0;

任意のオブジェクトのテストキーのデフォルト値を 0 に設定します。

于 2013-02-03T16:50:59.203 に答える