和谐代理在v8中

时间:2012-12-26 21:38:07

标签: javascript v8

我在v8中模拟noSuchMethod时出现问题。我正在命令行正确激活和声代理(我没有使用Proxy()对象得到错误,我可以使用一些代理功能)但我没有一个例子发现已经为noSuchMethod工作了。

var NoSuchMethodTrap = Proxy.create({
  // FIXME: don't know why I need to provide this method,
  // JS complains if getPropertyDescriptor is left out, or returns undefined
  // Apparently, this method is called twice: once for '_noSuchMethod_' and once for 'foo'
  getPropertyDescriptor: function(n){ return {} }, 
  get: function(rcvr, name) {
    if (name === '__noSuchMethod__') {
      throw new Error("receiver does not implement __noSuchMethod__ hook");
    } else {
      return function() {
        var args = Array.prototype.slice.call(arguments);
        return this.__noSuchMethod__(name, args);
      }
    }
  }
});

function MyObject() {};
MyObject.prototype = Object.create(NoSuchMethodTrap);
MyObject.prototype.__noSuchMethod__ = function(methName, args) {
  return 'Hello, '+methName;
};

我包含了我正在尝试的代码snipplit,但它有点毫无价值,因为无论我在哪里获得代码都是相同的情况。我已经谷歌了一个星期了。所以这就是问题:这是不是在v8中实现的?如果是这样我会错过什么?

1 个答案:

答案 0 :(得分:0)

这里只是关闭循环:代理规范已经发生了很大的变化,现在V8实现了全新的规范。不再需要标记,并且不应缺少任何标记。