这不起作用(在 OSX 上的 chrome 39 中):
var x = new Image();
Object.observe(x, function(){console.log('i never run');})
x.src = 'http://www.foo.com';
console.log('has been set: ' + x.src);
但这将:
var x = new function nonNative(){};
Object.observe(x, function(){console.log('i will run');})
x.src = 'http://www.foo.com';
这也将是:
var x = new XMLHttpRequest();
Object.observe(x, function(){console.log('so will i');})
x.src = 'http://www.foo.com';
因此问题与 Image 作为本机构造函数没有直接关系(因为 XMLHttpRequest 按预期工作) - 它似乎是特定于设置 img.src 的东西。我只能猜测这是因为设置 src 的行为很像方法(因为它会导致发出请求)。JS中是否存在可以像属性一样调用的方法?
假设不是这样,有没有人知道/可以猜测这是否是 Object.observe 的期望行为(在mdn docs 中看不到任何内容),如果不是,我将其报告为错误的最佳位置可能是哪里?