0

私はObject.create()2番目の引数をとるように拡張しています。

if (typeof Object.create !== 'function') {
    Object.create = function (o,arg) {
        function F() {}
        F.prototype = o;
        return new F(arg);
    };
}

//could be multiple of these objects that hold data
var a = {
  b : 2
};

var c = function(data){
  return{
    d : Object.create(data)
  };
};

//create new instance of c object and pass some data
var newObj = function(arg){
  return(Object.create(c(arg)))
}

var e = newObj(a);
e.d.b = 5;
var f = newObj(a);
console.log(e.d.b);
console.log(f.d.b);

このように使用する際に落とし穴があるかどうか疑問に思っていObject.create()ますか? これを使用する場合は、関数の arg 引数に対して追加のチェックを行いますObject.create()が、主なポイントは、これが問題を引き起こすか、やり過ぎかなどを確認することです.

4

1 に答える 1

1

はい、非常に大きな落とし穴が 1 つあります。それは、定義のつま先を踏んでいることです。

Object.createは、すでに 2 番目のパラメーター (キーをプロパティ記述子にマッピングするオブジェクト) を取ります。

これは古い環境でポリフィルするのが難しいため、依然として広く無視されていますが、よりユビキタスになると、シムは標準にかなりひどく一致しなくなります。

于 2014-01-08T12:06:23.663 に答える