javascript - JavaScript 中的 this 关键字和函数作用域

标签 javascript

我有以下代码(简化)

var Page = new UI('page.html');

Page.onLoad = function(html){

    this.name = 'Page 1';
    Util.test(this.run);

};

Page.run = function(){

    console.log(this.name); // undefined
    console.log(Page.name); // correct

};

var Util = function(){};

Util.prototype.test = function(callback){

    // when finished run the callback
    callback();

};

我的问题是为什么我不能使用this关键字如果执行离开对象然后返回?请解释我应该更改什么才能访问 this再次。

最佳答案

您可以将“this”绑定(bind)到函数 run,如下所示。

Page.onLoad = function(html){

    this.name = 'Page 1';
    Util.test(this.run.bind(this));

};

您可以找到有关函数“bind”的更多信息。 https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Function/bind

关于javascript - JavaScript 中的 this 关键字和函数作用域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42019532/

相关文章:

javascript - 通过 JavaScript 读取拖放有序列表

javascript - 无法从 CSS Create React App 中的公用文件夹导入

javascript - 使用 CSS3 根据鼠标位置平移图像方向

javascript - 如何移动到数组的上一个/下一个索引键

javascript - 完成后移除动画

javascript - 从链接中获取字段值

javascript - 如何根据键对javascript对象数组进行排序

javascript - Term.js - 页面向下滚动到带有终端的部分

javascript - ng-change 不起作用

javascript - 如何在javascript中评估字符串函数并返回值?