我在WebKit HTML 5 SQL存储笔记演示的源代码中看到以下内容:
function Note() {
var self = this;
var note = document.createElement('div');
note.className = 'note';
note.addEventListener('mousedown', function(e) { return self.onMouseDown(e) }, false);
note.addEventListener('click', function() { return self.onNoteClick() }, false);
this.note = note;
// ...
}
Run Code Online (Sandbox Code Playgroud)
笔者采用自我在一些地方(函数体)及本在其他地方(的函数方法的参数列表中定义的机构).这是怎么回事?现在我已经注意到了它,我会在各处开始看到它吗?
在JavaScript文件中,我看到:
function Somefunction(){
var that = this;
...
}
Run Code Online (Sandbox Code Playgroud)
声明that和分配给它的目的是什么this?
我在几乎所有的knockout.js视图模型中看到了这一行var self = this,然后所有局部变量都被引用为self.variableName.这比使用有this.variableName什么好处?
我很困惑,什么时候使用自我和这在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)
这两种方法都有效,但在这里使用它的用途是什么
我正在通过Knockoutjs教程.有一件事对我来说似乎很奇怪.我目前在第2部分:
http://learn.knockoutjs.com/#/?tutorial=collections
在每一个"阶级"的这一部分中,"这个"被分配给"自我"......在第一个案例中并非如此?
为什么有人会这样做?只是谁写了特定的代码有python成瘾,或者是否有一些实际的好处呢?
可能重复:
JS:var self = this?
在查看用JavaScript编写的任意代码时(例如在GitHub上),许多开发人员使用var self = this然后使用self而不是this引用当前对象.
这种方法背后的理由是什么?
作为一种样式约定,我喜欢在我访问全局范围中的变量时明确,更喜欢
window.example = "Hello";
window.alert(window.example);
Run Code Online (Sandbox Code Playgroud)
更不那么冗长
example = "Hello";
alert(example);
Run Code Online (Sandbox Code Playgroud)
我现在有一个可以直接从浏览器使用的模块,或者,如果它们可用,则来自Web工作者.在Web worker中调用全局对象self,而在浏览器中调用它window.
该window对象具有自我属性,因此self.example = "Hello"可以在两个上下文中工作,只要没有一个重新声明self(因为它们经常这样做:var self = this).
什么是最好的约定?
self并希望没有人宣称存在冲突self.window已定义,请使用window,否则使用self.想到这一点,我倾向于选择第二个.
如何从jQuery"changeDate"事件(jqueryUI date)回调函数访问反应组件状态.
var subheader = React.createClass({
getInitialState: function () {
return {
msg: this.props.msg
};
},
componentDidMount: function () {
$('#date').datepicker({
format: "dd/mm/yyyy"
}).on("changeDate", function (e) {
console.log(this.state.msg);
});
},
render: function () {
return (
// render HTML here.
)
}
});
Run Code Online (Sandbox Code Playgroud)
但得到this.state是未定义的.请任何人帮助我.
我想知道并理解这个和那个之间的不同,以及当我必须使用它时.我准备了许多帖子和许多教程,但我还不明白
这是我的班级
function Container(param) {
function dec() {
if (secret > 0) {
secret -= 1;
return true;
} else {
return false;
}
}
this.member = param;
var secret = 3;
var that = this;
this.service = function () {
console.log(this.member); // foo
console.log(that.member); // foo
return dec() ? that.member : null;
};
}
Run Code Online (Sandbox Code Playgroud)
新
var myContainer = new Container('foo');
myContainer.service()
Run Code Online (Sandbox Code Playgroud)
调用myContainer.service()将在前三次调用时返回'abc'.之后,它将返回null
为什么我要做var that = this?
-
slideshow=function(){
var g = document.createElement(...);
...
g.onclick = f1;
f1 = function(slideshow_instance, event) {
//EXPLAIN ME HOW TO GET THE slideshow_instance
}
}
var sl1 = new slideshow();
var sl2 = new slideshow();
Run Code Online (Sandbox Code Playgroud)
单击已创建的元素幻灯片应该返回
SL1
要么
SL2
我解释得好吗?
javascript ×8
knockout.js ×2
closures ×1
coding-style ×1
jquery ×1
reactjs ×1
scope ×1
this ×1
titanium ×1
web-worker ×1