javascript中对象的拦截方法

javascript中对象的拦截方法,javascript,Javascript,我知道如何在JavaScript中截取本机函数。例如,我使用下面的代码截取document.createElement: var origParseFloat = document.createElement; document.createElement = function(str) { alert("Called"); return origParseFloat(str); } 我这里的问题是如何截取对象的方法。 我的意思是,如果我想截取CanvasElement的方

我知道如何在JavaScript中截取本机函数。例如,我使用下面的代码截取
document.createElement

var origParseFloat = document.createElement;
document.createElement = function(str) {
     alert("Called");
     return origParseFloat(str);
}
我这里的问题是如何截取对象的方法。 我的意思是,如果我想截取CanvasElement的方法
toDataURL()
,该怎么办。在这种情况下,上面的代码不起作用。 因此,现在的主要问题是,在如下情况下,我如何拦截
toDataURL()

canvas = document.createElement('canvas');
var tdu = canvas.toDataURL();

在您的案例中,您需要在它出现的
原型上对该方法进行猴子补丁

var origToDataURL=HTMLCanvasElement.prototype.toDataURL;
HTMLCanvasElement.prototype.toDataURL=函数(){
var r=origtodataur.apply(这是参数);
log('toDataURL:',r);
返回r;
};
var canvas=document.getElementById('canvas');
var ctx=canvas.getContext('2d');
ctx.fillRect(25,25,50,50);
canvas.toDataURL()

在您的情况下,您需要在出现在中的
原型上对该方法进行猴子补丁

var origToDataURL=HTMLCanvasElement.prototype.toDataURL;
HTMLCanvasElement.prototype.toDataURL=函数(){
var r=origtodataur.apply(这是参数);
log('toDataURL:',r);
返回r;
};
var canvas=document.getElementById('canvas');
var ctx=canvas.getContext('2d');
ctx.fillRect(25,25,50,50);
canvas.toDataURL()

非常感谢您的回答,您能帮我处理一下酒店吗?我的意思是,如果我想知道某个属性是否被访问。例如:
baseAudioContext.sampleRate
@Bathooman我添加了一个劫持
sampleRate
getter的示例。非常感谢您的回答,您能帮我处理这个属性吗?我的意思是,如果我想知道某个属性是否被访问。例如:
baseAudioContext.sampleRate
@Bathooman我添加了一个劫持
sampleRate
getter的示例。