Tag: 函数

Javascript:函数链接

解决办法:不。 你不能这样做。 用&&​​链命令并用它来完成。 tl; dr:in random.function("blah").check() ,如果function("blah")返回false,我该如何忽略check() ? 或者这甚至有可能? 的背景: 好的,所以我很惊讶于代码。 但是我试图通过编码来让事情变得轻松一点,从而拖延。 而我的意思是,我的意思是微观上的。 所以基本上,我的整个项目是基于对象和插件。 (插件是包含一个对象的额外的.js文件,例如,afk.js看起来像这样: global.afk = function(){}; afk.check = function(){ … }; 通过加载该js文件,我可以访问afk对象及其中的所有函数。 可能效率不高,但它的工作原理和它确定什么function在做什么更容易。 回到拖延位。 因为我不知道哪些插件被加载,在一些共享的核心.js文件中,有这些条件语句: if (plugin.has("afk")) { afk.check(); }; if (plugin.has("afk")) { afk.check(); }; 然而,我感到无聊,使plugin.has()返回实际的对象,而不是“真”,所以我可以这样做: plugin.has("afk").check(); 按预期工作。 除非没有afk插件,这会引发“false没有方法检查”的明显错误。 那就是这样。 有任何想法吗? 另外,如果您有任何疑虑,请告诉我。 我知道我做了很多错误/效率低下的事情,而且在我弄明白的时候修正它们是很好的。

导出对象与函数NodeJs

导出对象{}与导出function 我正在开发一个练习应用程序,我遇到了这个问题什么时候需要导出一个对象而不是一个函数类? 场景示例: 我正在使用对象样式构build一个简单的authenticationmodule 。 // file auth.js module.exports = { login: function() { // code login }, logout: function() { // code logout }, register: function() { // code register } } 在这里我使用匿名函数样式 module.exports = function() { return { login: function() { // code login }, logout: function() { // code logout }, register: […]

删除处理程序本身的事件处理程序

简而言之:我想在自己的调用中将绑定的结果作为一个争论 var bound = foo.bind(this,bound); 因为我不知道如何解决我的问题。 问题: 我有一个项目是依赖于其他项目的数组。 一旦这些项目之一被删除,我想删除依赖项, 并删除所有的依赖关系上放置的监听器 。 我正在努力去除其他依赖项的事件处理程序。 我试图使用绑定,但由于处理函数是一个删除监听器,我发现我将不得不绑定bind()调用的结果在自己的调用作为参数。 这当然不起作用。 绑定调用bellow将未绑定的“handler”版本作为参数绑定,因此removeEventListener不起作用,因为它是函数的不同副本。 问题是:我可以使用绑定来做这个和/或我该如何解决这个问题? 我使用eventemitter3 ,但它应该是相同的任何事件库。 setHandlers(dependentItem,dependencies) { var handler = this.onDependencyRemoved; handler = handler.bind(this,dependentItem,dependencies,handler);//bind itself as third argument dependencies.forEach(dependency => { dependency.addEventListener("removed",handler); }); } onDependencyRemoved(dependentItem,dependencies,handler) { dependentItem.remove(); dependencies.forEach(dependency => { dependency.removeEventListener("removed",handler); }); } 编辑: 完整的工作示例在nodejs中运行: const EventEmitter = require('events'); //const EventEmitter = […]

Node.js中的函数参数对象与Chrome的JavaScript不同

我很困惑与Node.js函数参数对象。 假设我有以下代码: function x() { return arguments; } console.log(x(1, 2, 3)); 在Chrome开发者工具中,它以Array的forms返回: [1, 2, 3] 但是我在node.js中得到了不同的结果: { '0': 1, '1': 2, '2': 3 } 怎么来的?

如何用sails.js定义模型的实例方法

我如何定义Sails中的对象的函数/实例方法? 在Waterline doc( https://github.com/balderdashy/waterline )中他们说: var User = Waterline.Collection.extend({ … attributes: { … // You can also define instance methods here fullName: function() { return this.firstName + ' ' + this.lastName } }, } 但是当我尝试在Sails中的模型的属性中定义一个实例方法时,该函数不会被添加到对象中。 难道我做错了什么 ? 环境:Sails(v0.8.94),Node(v0.8.16)

如何确定一个JavaScript函数是本地的(没有testing'')

我想知道是否有一种方法可以区分JavaScript脚本函数( function(){} )和JavaScript本地函数(如Math.cos )。 我已经知道了func.toString().indexOf('[native code]') != -1技巧,但我想知道是否有另一种方法来检测它。 背景: 我需要创build一个No-op转发ES6代理,它可以处理对象上的本机函数,但是它会因TypeError: Illegal invocation (请参阅使用ES6代理和node.js的非法调用错误 )而失败。 为了解决这个问题,我在我的代理服务器的get处理程序中.bind()所有的函数,但是如果我能够有效地检测本机函数,我只需要.bind()这些原生函数。 更多细节: https : //github.com/FranckFreiburger/module-invalidate/blob/master/index.js#L106 注意: (function() {}).toString() -> "function () {}" (function() {}).prototype -> {} (require('os').cpus).toString() -> "function getCPUs() { [native code] }" (require('os').cpus).prototype -> getCPUs {} (Math.cos).toString() -> "function cos() { [native code] }" (Math.cos).prototype -> undefined (Promise.resolve().then).toString() -> […]

有没有可能调用function.apply而不改变上下文?

在一些Javascript代码(特别是node.js)中,我需要在不改变上下文的情况下调用具有未知参数集的函数。 例如: function fn() { var args = Array.prototype.slice.call(arguments); otherFn.apply(this, args); } 在上面的问题是,当我打电话apply ,我通过传递this作为第一个参数改变上下文。 我想传递args的函数被调用, 而不改变被调用的函数的上下文。 我基本上想这样做: function fn() { var args = Array.prototype.slice.call(arguments); otherFn.apply(<otherFn's original context>, args); } 编辑:添加更多关于我的具体问题的细节。 我正在创build一个Client类,其中包含有关连接的其他信息的套接字(socket.io)对象。 我通过客户端对象本身暴露套接字的事件侦听器。 class Client constructor: (socket) -> @socket = socket @avatar = socket.handshake.avatar @listeners = {} addListener: (name, handler) -> @listeners[name] ||= {} @listeners[name][handler.clientListenerId] = […]

console.log javascript

我正在尝试在JavaScript中logging一个函数: console.log(callback) >>[Function] 我想看看这个function是什么 我可以这样做吗? 谢谢。