草庐IT

CALL_NON_FUNCTION_AS_CONSTRUCTOR

全部标签

javascript - 如何使用 mocha/chai/chai-as-promised 测试 ES7 异步函数

我有以下功能要测试://...constlocal=newWeakMap();exportdefaultclassUser{//...asyncpassword(password){if(!password)returnlocal.get(this).get('hash');//removethisforsecurityreasons!if(password.length现在我想用mocha测试这个函数,chai和chai-as-promised做这个测试用例:importchaifrom'chai';importchaiAsPromisedfrom'chai-as-promised'

javascript - foo.toString() 和 Object.prototype.toString.call(foo) 有什么区别?

如果我定义一个函数:functionfoo(){alert(this.x);}我可以通过调用foo函数的toString方法来打印函数定义。console.log(foo.toString())输出:functionfoo(){alert(this.x);}如果我然后运行console.log(Object.prototype.toString.call(foo))输出:"[objectFunction]"令我惊讶的是输出结果不同。我认为这两种形式是等价的吗?即foo函数从顶级Object继承了toString方法并使用Object.prototype.toString.call(fo

javascript - 类型错误 : Cannot find function includes in object

我使用GoogleScript的经验很少,但我试图用它来搜索电子表格的一列并找到字符串“FilmDub”的所有实例(知道每个单元格只能有一个)。下面是我的代码:functionfilmDub(){varsheet=SpreadsheetApp.getActiveSheet();vardata=sheet.getDataRange().getValues();for(vari=1;i但是我一直收到错误TypeError:CannotfindfunctionincludesinobjectLet'sMakeADate,FilmDub,ThreeHeadedBroadwayStar,Film

javascript - 为什么 (function(){return this}).bind ('abc' )()== ='abc' 等于 false?

假设我有一个这样的函数:varf1=function(){returnthis;};console.log(f1.bind('abc')()==='abc');据我所知,f1.bind('abc')应该创建一个返回'abc'的新函数,所以我猜它的输出应该与console.log('abc'==='abc')这是真的,但现在输出是假的,我的猜测有什么问题吗? 最佳答案 在非严格模式下,原始值被包裹在对象中。所以,'abc'变成了newObject('abc')。在严格模式下,这不会发生。'usestrict';varf1=functi

javascript - 是 $(function(){});和 $ ("document").ready(function(){});相同?

我一直很喜欢Lynda.com的JqueryEssentialTraining,我注意到讲师在开始时使用:Fig.1$("document").ready(function(){funstuffgoeshere});然而,在他开始使用的路线的某处:Fig.2$(function(){funstuffgoeshere});从他说话的方式来看,这听起来好像它们完全是同义词(一些固有的jquery速记?)但据我所知,它从未被明确提及。我确信有人可以为我快速解决这个问题。我找到了this但我相信这个问题略有不同——我理解在文档就绪时调用函数与全局可用函数的概念;(这些函数也有名称。)讲师使用幻

javascript - 如何在 JS 的 setTimeout 中调用 this.function?

我有以下JS:functionTrackTime(){this.CountBack=function(secs){setTimeout(function(){this.CountBack(secs)},SetTimeOutPeriod);}}我已经用闭包(见上文)和其他十几种方法尝试过这个。我似乎无法在任何浏览器中使用它。setTimeout函数在未在“类”函数中调用时工作正常。有人可以帮我吗? 最佳答案 发生这种情况是因为执行函数时“this”的范围发生了变化。试试这个技巧..functionTrackTime(){this.Co

javascript - Object.constructor===Object.constructor.constructor//为什么?

此处说明https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function函数对象实例的构造函数属性“指定创建对象原型(prototype)的函数”。这令人困惑,所以Object.constructor是“创建对象原型(prototype)的函数”?什么对象才是“对象”?我试图理解为什么Object.constructor的构造函数属性本身?因此:Object.constructor===Object.constructor.constructor//为什么?编辑:我找到了T.J.克劳德的回答很好,

javascript - jQuery/JavaScript : My recursive setTimeout function speeds up when tab becomes inactive

我在构建的这个jQuery幻灯片插件中遇到了一个奇怪的小困境。这没什么特别的,我迄今为止编写的代码运行良好,但我注意到,当我离开网站运行并切换到新选项卡并继续在另一个选项卡中浏览网页时(Mac版Chrome在我的例子中),当我返回我的站点时,setTimeout调用似乎已经加速,而不是等待计时器完成触发事件,而是连续触发。这是我的(简化)代码:vartimer;varcounter;varslides;//collectionofalltargetedslides.//animatetothenextslidefunctionnextSlide(){//stoptimermethods

javascript - 为什么要使用带参数的 Array.prototype.slice.call

我正在使用apply调用一个方法,但我不知道我将传递多少个参数:目前我的代码是这样的:selectFolder:function(e){e.preventDefault();this.addSelectedClass.apply(this,Array.prototype.slice.call(arguments));},我使用Array.prototype.slice的唯一原因是因为它在大多数示例中都是如此。为什么我不只是像这样传递参数:this.addSelectedClass.apply(this,arguments); 最佳答案

javascript - 语法 !function() { ... } 是什么意思?

我在简单、伟大、精彩和强大的库中找到了这个语法knockoutjs:!function(factory){...}function声明前的非符号(!)是什么意思?更新:源代码不再包含这个确切的语法。 最佳答案 !运算符表现正常,否定表达式。在这种情况下,它用于强制函数成为函数表达式而不是函数语句。由于!运算符必须应用于表达式(将其应用于语句是没有意义的,因为语句没有值),该函数将被解释为表达式。这样可以立即执行。function(){alert("foo");}();//errorsincethisfunctionisastatem