javascript - 如何访问对象外部的 "this"变量

标签 javascript scope

我正在制作一个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 不是函数”。

最佳答案

您不能从对象外部访问“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});

关于javascript - 如何访问对象外部的 "this"变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41203481/

相关文章:

javascript - 如何在 Vue 中有条件地设置选定的选项

javascript - 不为自托管 chrome 扩展的 chrome.identity.getAuthToken 调用回调

c# - ILogger 的隐式范围

c++ - 类未在范围内声明 - 即使包含 .h

knockout.js - 在 viewModel 范围之外的 javascript 函数中访问 viewModel

javascript - 如何最好地从一个数组中未包含在第二个数组中的对象创建对象数组

Javascript:如何动态更新我的闭包?

javascript - Chrome NaCl 与 V8 有什么关系吗?

javascript - try/catch 表达式中的 var 关键字 : JSLint bug or global assignment?

python - 如何将 tf.layers 变量放入 tf.name_scope/tf.variable_scope 中?