Tag: 匿名函数

区分节点的本地function和匿名function

我正在寻找一种方法来遍历一个对象,并执行一个动作,如果我有一个匿名函数,并不执行操作,如果我有一个本地的function。 最好用一个例子来解释: User = { first : String, last : String, email : function(email) { // …. } } User.forEach(function(prop) { if(! native ) { // Do something } }); 消化道反应当然不是,但是console.log会输出string原生函数的[Function: String] [Function] ,匿名函数的[Function] 。 谢谢! 马特

你能把一个匿名方法(函数)dynamic地变成一个命名方法吗?

鉴于此方法: var obj = {}, obj.foo = function () {}; 是否可以在创build后为该方法分配一个名称,使其看起来类似于: var obj = {}, obj.bar = function bar() {}; foo方法是匿名的,并被分配给一个属性。 小节方法被命名并分配给一个属性。 你可以把匿名foo方法dynamic地变成一个名为foo的方法吗? 是否有可以设置或类似的function对象的属性: obj.foo.<name> = Object.keys(obj)[0]; 请不要使用jQuery。 此外,这是在节点服务器应用程序,所以跨浏览器问题将无关紧要。 编辑:我工作的答案是丹尼尔的链接: 如何在Javascript中dynamic设置一个函数/对象的名称,因为它显示在Chrome中 。 这种方法也处理函数的参数。

传递正在创build的参数

我正在做一个NodeJS / Express监听器,并且正在创build我的connectListener正在创build的input: app.get('/server/:args', function(req, res) { res.sendFile(__dirname + '/index.html'); // … var args = req.param("args"); var client = net.connect({port : 50505}, connectListener(args, client)); }); 然后我有我的connectListener函数: function connectListener(args, client) { console.log("Connected to server."); console.log(args); client.write(args); // …. } 但是,我得到一个错误,参数是未定义的: TypeError: Cannot read property 'write' of undefined at connectListener (C:\Users\ES\workspace_luna\WptHash\server-src\index.js:39:8) at C:\Users\ES\workspace_luna\WptHash\server-src\index.js:33:43 at Layer.handle [as handle_request] […]

从匿名函数返回作为parameter passing

考虑下面的代码: function dbTask(q) { mysql = new MySQL(); mysql.host = sqlHost; mysql.user = sqlUser; mysql.password = sqlPassword; mysql.query("USE stock"); return mysql.query(q, function(err, results, fields) { if(err) { console.log("MySQL Error: " + err + ", Query: " + q); return false; } else { return results; //here } }); }; var r = dbTask("SELECT * FROM […]

匿名函数范围混淆

如何将匿名函数中的值分配给全局variables或其范围外的variables。 比如下面的例子。 console.log(rows)返回正确的数据,而console.log(result)返回未定义 var result; this.query(sql).execute(function(error, rows) { console.log( rows ) result = rows; }); console.log( result );

为什么在使用strict时,“this”在匿名函数中是undefined?

为什么在严格模式下使用JavaScript时, 这是一个匿名函数undefined? 我明白为什么这可能是有道理的,但我找不到具体的答案。 例: (function () { "use strict"; this.foo = "bar"; // *this* is undefined, why? }()); 在小提琴中testing: http : //jsfiddle.net/Pyr5g/1/检查logging器(萤火虫)。

Node.js – 使用Promise.all()加载和执行多个函数

我正在开发一个“插件”的概念,我有一系列的文件,每个文件包含一个单一的function(插件)。 我想使用promise.all()自动加载和执行这些。 问题:每个插件函数都不执行。 这里是我的例子plugin plugins/example.js : "use strict"; exports = function() { return new Promise(function(resolve, reject) { console.log("Plugin running…."); setTimeout(resolve, 200, 'example plugin succeeded!'); }); }; 从我的app.js中,然后使用require-all NPM模块加载所有插件: const plugins = require('require-all')(__dirname + '/plugins'); 然后我尝试执行所有的作为我的承诺链的一部分: return Promise.all([plugins]); 没有logging从function发生。 有趣的是,当我loginplugins的内容,我看到和空对象: { "example": {} } 任何人都可以build议为什么示例函数没有被调用?

JavaScript绑定vs匿名函数

这个代码来自mongoose深度填充 async.parallel([ User.create.bind(User, {_id: 1, manager: 2, mainPage: 1}), Comment.create.bind(Comment, {_id: 3, user: 1}), … ], cb) 使用Function.prototype.bind来确保当在不同的上下文中执行callback函数User.create时, User.create绑定到适当的对象。 这相当于 async.parallel([ function() { User.create({_id: 1, manager: 2, mainPage: 1}) }, function() { Comment.create({_id: 3, user: 1}) }, ], cb) ? 如果是这样,在什么情况下bind一个更好的语法比使用匿名函数?

variables作用域如何在Mochatesting框架内工作?

我是一个JavaScript,node.js,摩卡等所有东西的相对新手。 在我的代码中,我有一个单元对象有一个disable() ,设置禁用属性为true和isDisabled() ,返回禁用的属性。 它也有一个方法nextTurnReset() ,在下一回合开始时重置单位。 我写了一个testing套件来testing这种行为。 我首先禁用对象,然后尝试testing以查看它是否被禁用。 但是,我的第一个testing中的单元variables(在传递给Mocha的it()方法的匿名函数中it()处于非禁用状态,正如我在节点的debugging器中观察到的那样。 describe('#disable()', function() { var unit = tests.newUnit(); unit.disable(); debugger; it('disabled off turn?', function() { debugger; (unit.isDisabled()).should.be.exactly(true); }); unit.nextTurnReset(); it('disabled on next turn?', function() { (unit.isDisabled()).should.be.exactly(true); }); unit.nextTurnReset(); it('disabled on 2nd turn?', function() { (unit.isDisabled()).should.be.exactly(false); }); }); 为logging,前两个testing失败,最后一个成功,表明该单位从来没有被禁用。 从使用节点debugging器的repl:在第一个debugger; 声明, unit.disabled == true ,但在第二个debugger; 语句unit.disabled == false […]