Aje*_*rya 11 javascript titanium
我很困惑,什么时候使用自我和这在JavaScript中.
我知道这是指当前的上下文,而self指的是当前窗口.
当我在Titanium中开发应用程序时.我想知道何时使用自我或者这个
或者确实在钛开发中有任何自我概念.
这是我在钛commonJS模块中执行的示例代码
var auth = require('/SDKTest/auth');
var nodeAPI = require('/SDKTest/nodeAPI');
function myAPI() {
this.auth = auth;
this.nodeAPI = nodeAPI;
return this;
}
module.exports = myAPI;
Run Code Online (Sandbox Code Playgroud)
此代码的工作,但我可以用自己代替这个?而不是使用这个,我可以创建一个命名空间,并做这样的事情:
function myAPI() {
var api = {};
api.auth = auth;
api.nodeAPI = nodeAPI;
return api;
}
Run Code Online (Sandbox Code Playgroud)
这两种方法都有效,但在这里使用它的用途是什么
self不是JavaScript关键字!程序员在定义类时始终使用它来始终对对象本身进行有效引用.
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();
Run Code Online (Sandbox Code Playgroud)
你的问题有点令人困惑,就像在问:我买苹果还是西红柿?答案是,这实际上取决于您想做什么,因为它们完全不同。
本质上,您在某种程度上已经回答了自己的问题,因为您已经知道两者之间的区别:
this指的是当前上下文self指的是windowfunction myAPI() {
this.auth = auth;
this.nodeAPI = nodeAPI;
return this;
}
module.exports = myAPI;
Run Code Online (Sandbox Code Playgroud)
你问的是是否可以使用self。想一想,this你可以做什么?它允许您参考上下文。上下文是什么,嗯,就是module你打电话的时候module.exports()。并且module很可能不会window,所以不,你不能self在这里使用。
这能回答问题吗?
第二个代码示例似乎做了完全不同的事情。我不知道该怎么办。
| 归档时间: |
|
| 查看次数: |
5729 次 |
| 最近记录: |