使用实例方法作为事件处理程序的回调将范围this
从 “我的实例” 更改为 “无论什么叫回调” 。所以我的代码看起来像这样
function MyObject() {
this.doSomething = function() {
...
}
var self = this
$('#foobar').bind('click', function(){
self.doSomethng()
// this.doSomething() would not work here
})
}
它有效,但这是最好的方法吗?我觉得很奇怪
这个问题并非特定于jQuery,而是通常特定于JavaScript。核心问题是如何在嵌入式函数中“引导”变量。这是示例:
var abc = 1; // we want to use this variable in embedded functions
function xyz(){
console.log(abc); // it is available here!
function qwe(){
console.log(abc); // it is available here too!
}
...
};
此技术依赖于使用闭包。但这不能使用,this
因为它this
是一个伪变量,可能会随着范围的变化而动态变化:
// we want to use "this" variable in embedded functions
function xyz(){
// "this" is different here!
console.log(this); // not what we wanted!
function qwe(){
// "this" is different here too!
console.log(this); // not what we wanted!
}
...
};
我们能做什么?将其分配给某个变量,并通过别名使用它:
var abc = this; // we want to use this variable in embedded functions
function xyz(){
// "this" is different here! --- but we don't care!
console.log(abc); // now it is the right object!
function qwe(){
// "this" is different here too! --- but we don't care!
console.log(abc); // it is the right object here too!
}
...
};
this
在这方面不是唯一的:arguments
是另一个应以相同方式处理的伪变量-通过别名。
像pdftable和pdfCell,都是操作table的为啥没有单独在pdf packege下面开一个table的包分类呢。 这样大量的类在同一个包下都很难找哇
这个sql查询要6s多,但是我两张表数据量都不是很大呀。box_api_data目前40000条,box_data_info目前10006条。基本都是比较少的,这么个数据量连接查询居然干到了6s,是我sql有问题吗?目前两张表都没有索引。
const dataItem = (msg.data && msg.data[0]) || msg; 如果msg.data和msg.data[0]都为真时返回msg.data[0],否则返回msg?
Object[ ] arr = (Object[ ]) object ; 还可以这样写 ? 怎么可以把一个东西 变成数组 ? 一变多 ?
python这参数还能这样写?
对于特定的任务,我需要在可变数组中进行大量快速、单独的写操作。为了检查性能,我使用了以下测试: