v8エンジンの __proto__ が getter/setter になってた

28.0.1500.3 (Official Build 198635) dev-mで確認

以前確認した時はまだDataDescriptorだったから、また変更されたみたい。

> Object.getOwnPropertyDescriptor(Object.prototype,"__proto__")
Object {get: function, set: function, enumerable: false, configurable: true}

これで、Firefox, Chrome ともに Object.setPrototypeOf を作れる!....と思ったけど。

(function() {
  var protoSet = Object.getOwnPropertyDescriptor(Object.prototype, "__proto__").set;
  Object.setPrototypeOf = function setPrototypeOf (aTarget, aProto) {
    protoSet.call(aTarget, aProto);
  };
})();

var o = {};
Object.setPrototypeOf(o, { foo: function(){ return "FOO"; } });

すると

TypeError: Generic use of __proto__ accessor not allowed

って例外が発生する。

ぐぬぬ...orz