Tag: ecmascript 5

&&评估问题

据我所知,逻辑&&工作原理如下 var test = false; var foo = test && 42; 仅当第一个条件被评估为true ,此代码才会将42分配给foo 。 所以在这个例子中, foo将保持其当前值。 我想知道为什么这个片段根本不起作用: var test = “”; var foo = test && 42; 现在, foo从test分配中获取值。 我很困惑。 空字符串是Javascripts 虚假值之一 ,那么为什么&&运算符会在这种情况下失败? 有人可以帮我解决这个问题吗?

按钮显示选择要上载的文件对话框

而不是使用input type=”file” html标记,是否可以通过单击input type=”button”出choose a file to upload对话框? 然后,当从choose a file to upload对话框中choose a file to upload ,文件路径会插入到常规的html input type=”text”标记中吗? 我似乎gmail做了类似的事情,但没有按钮和文本输入,他们只是有一个链接add file或类似的东西。 单击该链接后,将显示select file(s) to upload by mail.google.com对话框select file(s) to upload by mail.google.com的select file(s) to upload by mail.google.com 。 单击文件时,屏幕上会显示文件名。 他们是怎么做到的?

使用.bind()避免使用.call()和.apply()

我正在寻找一种方法来完成某项任务,即从此开始 jQuery.when.apply( null, promiseArray ).done(…) 至 when( promiseArray ).done(…) 您可能知道, .bind()可以习惯于创建类似默认参数的东西,也可以做一些非常漂亮的东西。 例如,而不是总是打电话 var toStr = Object.prototype.toString; // … toStr.call([]) // [object Array] 我们可以这样做 var toStr = Function.prototype.call.bind( Object.prototype.toString ); toStr([]) // [object Array] 这是相当酷的(即使有这样的性能阴谋调用.bind() ,我知道它并且我知道它),但我无法真正完成jQuerys .when调用时。 如果你有一个未知数量的promise对象,你通常将它们推入一个数组中,然后就可以将它们传递给.when就像我上面的第一个代码片段一样。 我到目前为止这样做: var when = Function.prototype.apply.bind( $.when ); 现在我们可以去 when( null, promiseArray ).done(…) 这有效,但我也想摆脱每次都明确传入null的需要。 所以我试过了 var when = Function.prototype.apply.bind( […]