我正在制作一个js canvas插件,我创建了这个对象:
function MyObject(argument) {
var self = this;
var callback = argument.callback;
this.onRequestAnimationFrame = function() {
callback(self);
}
this.myFunction = function (){
return false;
}
}
我称之为
var customObject = new MyObject({
callback: function(instanceClass){
instanceClass.myFunction();
}
})
问题是,我必须得到实例类并从中调用一个函数,但我从控制台得到“myFunction不是函数”。
答案 0 :(得分:2)
您不能从对象外部访问“this”。
你写这个的方式,你需要实例化对象,此时myFunction将是对象的一个方法。
“this”不是变量,而是关键字。
function MyObject(argument) {
var self = this;
var callback = argument.callback;
this.onRequestAnimationFrame = function() {
callback(self);
}
this.myFunction = function (){
return false;
}
}
function callback (caller) {
console.log(caller.myFunction());
};
var a = new MyObject({callback : callback});
答案 1 :(得分:0)
当我们进行构造函数调用时,如果我们没有返回任何对象,则函数返回一个'this'对象,该对象位于其词法范围内。
当你写这篇文章时,
var customObject = new MyObject({
callback: function(instanceClass){
instanceClass.myFunction();
}
});
function MyObject返回'this'对象。
因此,我们可以调用'onRequestAnimationFrame'函数,该函数反过来调用回调。
customObject.onRequestAnimationFrame();