javascript - 既然 JavaScript 有闭包,那么 this 关键字的目的到底是什么?

标签 javascript node.js

给定以下代码,我们可以看到闭包有助于将变量的值包含在其范围内:

var f = new Foo('jim','jam');
var b = new Bar('saul','paul');
var bz = new Baz();

function Foo(jim,jam){

    this.jim = jim;
    this.jam = jam;

    function log(){
        console.log('jim:',jim,'jam:',jam);
    }

    return log;
}


function Bar(jim,jam){

    function log(){
        console.log('jim:',jim,'jam:',jam);
    }

    return log;
}

function Baz(jim,jam){

    this.jim = 'bark';
    this.jam = 'catch';


    function log(){
        console.log('jim:',this.jim,'jam:',this.jam);
    }

    return log;
}

f();
b();
bz();

那么,JavaScript 中的“this”关键字到底有什么用呢?什么时候变得有必要?

最佳答案

this关键字用于访问当前上下文,与当前作用域不同。

如果您调用一个对象的方法,该调用的上下文就是该对象。您可以使用 this 关键字访问对象中的属性:

function Foo(jim,jam){
    this.x = jim;
    this.y = jam;
}

Foo.prototype.log = function(){
    document.write('jim:' + this.x + ', jam:' + this.y);
};

var f = new Foo('jim','jam');
f.log();

关于javascript - 既然 JavaScript 有闭包,那么 this 关键字的目的到底是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29931446/

相关文章:

javascript - 使用规则 javascript 拆分

javascript - Jquery 每个 Json 值问题

javascript - Sequelize 记录查询和输出

node.js - MEAN 应用程序中的租赁

javascript - 如何统计mongodb中的记录数

javascript - js 检查图像是否被 chop/损坏的数据

php - 表单已验证但仍在提交但没有值?

javascript - 如何在onClick事件之前调用action方法

javascript - 基于 promise 的编程,可能与否?

node.js - 使用 marklogic Nodejs API 阅读大型文档