0

create と construct という 2 つの関数があると便利なのはなぜですか

if (!Object.create) {
  Object.create = function(base) {
    function F() {};
    F.prototype = base;
    return new F();
  }
}

if (!Object.construct) {
  Object.construct = function(base) {
    var instance = Object.create(base);
    if (instance.initialize)
      instance.initialize.apply(instance, [].slice.call(arguments, 1));
    return instance;
  }
}
4

2 に答える 2

0

「私たち」はしません。 Object.createは、最新のブラウザー (ES5 のこの部分を仕様どおりに実行するブラウザー) でオブジェクトへの非常に低レベルのアクセスを使用してオブジェクトを作成する方法です。

var bob = Object.create(Person.prototype, { name : {
                                                writeable : false,
                                                configurable : false,
                                                value : "Bob"          }});

bobから継承しPersonます。

bob.name現在は「ボブ」と同じです。
bob.name書き直すことはできません。
bob.name別のデータ型 (number/boolean/NaN/null/etc) に変更することはできません。おそらく、完全
bob.nameに取り除くことを除いて、削除することはできません。bob

これは最新のブラウザでのみ機能します。

古いバージョンのObject.createJavaScript では、オブジェクトの列挙型へのアクセスや、それらが書き込み可能か型固有かなどを許可していなかったため、ポリフィルは継承部分のみを行います。
したがって、それらはポリフィルできません。

誰も必要と Object.createしません。つまり、システム アーキテクチャ (AJAX ライブラリ、新しい NodeJS ベースのバンキング システム、クラウド OS など) を行っていない人はいません。それでも、ブラウザーが最新バージョンの JS を使用していることを保証できる場合にのみ役立ちます。

于 2013-03-30T13:41:12.277 に答える