我认为这将是我可以轻松谷歌的东西,但也许我不是在问正确的问题......
如何在给定的javascript函数中设置"this"指的是什么?
例如,像大多数jQuery的功能一样,例如:
$(selector).each(function() {
//$(this) gives me access to whatever selector we're on
});
Run Code Online (Sandbox Code Playgroud)
如何在调用时编写/调用我自己的独立函数,这些函数具有适当的"this"引用?我使用jQuery,所以如果有一个特定于jQuery的方法,那就是理想的.
我已经在聊天应用程序上使用node.js了一段时间(我知道,非常原创,但我认为这是一个很好的学习项目).Underscore.js提供了许多看起来很有趣的函数式编程概念,所以我想了解如何设置JavaScript中的函数式程序.
根据我对函数式编程的理解(这可能是错误的),整个想法是避免副作用,这些副作用基本上都有一个函数来更新函数之外的另一个变量,所以像
var external;
function foo() {
external = 'bar';
}
foo();
Run Code Online (Sandbox Code Playgroud)
会产生副作用,对吗?因此,作为一般规则,您希望避免在全局范围内扰乱变量.
好的,那么当你处理对象时它是如何工作的呢?例如,很多时候,我将有一个构造函数和初始化对象的init方法,如下所示:
var Foo = function(initVars) {
this.init(initVars);
}
Foo.prototype.init = function(initVars) {
this.bar1 = initVars['bar1'];
this.bar2 = initVars['bar2'];
//....
}
var myFoo = new Foo({'bar1': '1', 'bar2': '2'});
Run Code Online (Sandbox Code Playgroud)
所以我的init方法是故意造成副作用,但是处理相同情况的功能方法是什么?
此外,如果有人可以指向我尝试尽可能功能的程序的Python或JavaScript源代码,那也将非常感激.我觉得我接近"得到它",但我只是不在那里.主要是我对函数式编程如何与传统的OOP类概念一起工作感兴趣(或者如果出现这种情况的话,可以将其用于不同的东西).
javascript functional-programming serverside-javascript node.js underscore.js
在表单通过初始客户端验证后返回的服务器端验证错误的元素触发错误的最佳方法是什么?
$("#contact_form").validate({
submitHandler: function(form) {
$.ajax({
type: 'POST',
dataType: 'json',
url: '/contact/send',
data: $(form).serialize(),
success: function(response) {
if(response.error) { //server came back with validation issues
var fields = response.fields;
for(var i=0, var len = fields.length; i < len; i++) {
var field_name = fields[i].name;
var field_error = fields[i].error;
// TRIGGER ERROR ON AFFECTED ELEMENT
}
return false;
}
//everything went ok, so let's show a thanks message
showThanks();
}
}
});
Run Code Online (Sandbox Code Playgroud)
我想的是:
$(form).find("[name='" + field_name + "']").triggerError(field_error);
Run Code Online (Sandbox Code Playgroud)
但我没有看到任何以这种方式手动触发错误的api方法.
我正在使用oracle从购物应用中输出订单项.每个项目的数量字段可能大于1,如果是,我想将该行返回N次.
这就是我正在谈论的一张桌子
product_id, quanity
1, 3,
2, 5
Run Code Online (Sandbox Code Playgroud)
我正在寻找一个可以返回的查询
1,3
1,3
1,3
2,5
2,5
2,5
2,5
2,5
Run Code Online (Sandbox Code Playgroud)
这可能吗?我看到了SQL Server 2005的这个答案,我正在寻找oracle中几乎所有的东西.遗憾的是,建立专用号码表不是一种选择.
我不是百分之百,如果元组是我正在谈论的术语,但我正在看这样的事情:
Table grades
user grade
------------
Jim B
Bill C
Tim A
Jim B+
Run Code Online (Sandbox Code Playgroud)
我知道我能做到:
SELECT COUNT(*)
FROM grades
WHERE (
(user = 'Jim' AND grade = 'B')
OR (user = 'Tim' AND grade = 'C')
);
Run Code Online (Sandbox Code Playgroud)
但有没有办法做更像这样的事情?
SELECT COUNT(*)
FROM grades
WHERE (user, grade) IN (('Jim','B'), ('Tim','C'));
Run Code Online (Sandbox Code Playgroud)
编辑:作为旁注,我只测试:
(user, grade) = ('Tim','C')
Run Code Online (Sandbox Code Playgroud)
那失败了,所以我认为IN也会失败,但我错了(谢天谢地!).
我遇到了一个问题,我的应用程序存在于iframe中,而且它是从外部域调用的.当iframe正确加载时,IE9不会触发加载事件,所以我认为我使用setTimeout来调查页面.
无论如何,我想看看我的setTimeout通常需要什么持续时间来完成,所以我希望能够记录setTimeout从我的回调中触发的延迟,但是我不知道如何将该上下文传递给它所以我可以记录下来.
App.readyIE9 = function() {
var timings = [1,250,500,750,1000,1500,2000,3000];
for(var i = 0; i < timings.length; i++) {
var func = function() {
if(App.ready_loaded) return;
console.log(timings[i]);
App.readyCallBack();
};
setTimeout(func,timings[i]);
}
};
Run Code Online (Sandbox Code Playgroud)
我一直在IE9的控制台中获取LOG:undefined.
完成此任务的正确方法是什么?
谢谢
javascript jquery closures document-ready internet-explorer-9
这个头衔很残酷,但我不知道怎么说.
我有一个绑定到user_id的键值表,用于存储整个站点的用户首选项.如果用户没有进入并更新他们的任何设置,那么每当我要求一个密钥时(比如说"FAVORITE_COLOR"它将为null,所以我需要拉出我与默认用户绑定的默认设置, user_id = 0.
我正在考虑UNION的行,将user_id = 0的结果放到查询的底部,但这只会导致重复.我不确定它是否可能,但我还是喜欢能说出类似的话:
SELECT val FROM k_v WHERE user_id = 123 AND k = 'FAVORITE_COLOR'
UNION IF val IS NULL
SELECT val FROM k_v WHERE user_id = 0 AND k = 'FAVORITE_COLOR';
Run Code Online (Sandbox Code Playgroud)
有什么好办法吗?
编辑:感谢您的所有帮助.如果你的用例只是抓住这个问题的单个值,那么来自dual的NVL正是你想要的,但是如果你打算在同一个查询中返回多个对,那么看一下其他的一些答案,因为他们可能实际上更有意义的实施.
我接下来讨论了ZeissS的建议,因为它很简单,仍然是一个查询,可以使用多个k,v对,并且我没有问题做可能的重复过滤客户端.
我正在使用一个PHP Web应用程序,该应用程序会自动调整图像的大小,并且正在考虑将缓存的副本存储在安装了NFS的NAS上,因此更新图像时,我很容易刷新缓存。
我唯一担心的是,如果集群中有2个或更多服务器试图同时创建相同的图像缓存文件,那么NFS通常会发生什么情况?
当刷新内容更新的缓存时,很有可能会发生冲突,但是我没有很好的方法来测试开发中的这种情况,因为我只在一个盒子上工作。
有经验的人吗?