Difference between self and this in javascript and when to use either of them [duplicate]

早过忘川 提交于 2019-12-01 15:25:13

Your question is somewhat confusing, it's like asking: Do I buy apples or tomatoes? The answer is, it really depends on what you want to do, since they're completely different.

Essentially, you have answered your own question to some extent, because you already know the differences between the two:

  • this refers to the current context
  • self refers to window
function myAPI() {
     this.auth = auth;
     this.nodeAPI = nodeAPI;
     return this;
    }
module.exports = myAPI;

You're asking whether you can use self instead. Think about it, what does this allow you to do? It allows you, to refer to the context. What is the context, well, it's module when you call module.exports(). And module is most likely not going to be window, so no, you can't use self here.

Does that answer the question?

The second code example seems to do something completely different. I don't know what to make of that.

self is not a JavaScript keyword! Programmers use that when defining classes to have always valid reference to object itself.

var Person = function() {
    var self = this;
    // private function
    function say(what) {
        alert(what);
    }
    self.fetchSomething = function() {
        var xhr = Ti.Network.createHTTPClient({
            onload: function() {
                // in this case 'this' is referencing to xhr!!!
                say(this.responseText);
            }
        });
        xhr.open('GET', 'http://www.whatever.com');
        xhr.send();
    }
    return self;
}
var p = new Person();
p.fetchSomething();
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!