小编Mih*_* B.的帖子

更好的方法来检查函数是否已经绑定在纯JavaScript中?

我遇到的情况是,我想知道函数是否已被绑定,以便在使用callapply使用不同的上下文调用该函数时设置警告消息.

function myfn (){ }
/* or */
var myfn = function () {}


var ref = myfn.bind(null);
Run Code Online (Sandbox Code Playgroud)

我检查了Firefox和Chrome控制台中的功能对象,我发现的唯一区别是绑定版本的名称前缀为bound.

> myfn.name
> "myfn"

> ref.name
> "bound myfn"
Run Code Online (Sandbox Code Playgroud)
  1. 这是一个可靠的检查吗?

  2. 是否有更多方法可以找到函数是否已绑定?

*注意:在旧的浏览器不感兴趣(例如:<ie10)

javascript scope bind function

5
推荐指数
1
解决办法
225
查看次数

设置或分配 window.location 时的笑话错误

在 v25 上升级了 Jest 库,所有检查位置更改的单元测试都失败了。

我检查了在 jest repo上打开的几个问题,但我实际上并不明白如何解决这个问题。

调用的代码location.assign因以下错误而中断:

Error: Not implemented: navigation (except hash changes)

      69 |     // window.location.href = url;
    > 70 |     window.location.assign(url);
Run Code Online (Sandbox Code Playgroud)

我想 Jest jsdom 窗口对象在更改位置方面不应该再被视为真正的浏览器窗口。

有什么建议吗?


我将在这里添加我的发现:

  • 测试中的导航不起作用。所有这些在浏览器中工作的方法都没有在 JSDom 窗口中实现:
    • window.location.href = "https://myapp.com"
    • window.location.assign("https://myapp.com")
    • window.location.replace("https://myapp.com")
    • Object.defineProperty(window.location, "href", { writable: true, value: currentUrl }); window.location has been set as 不可伪造

要修复我使用的失败测试:

  1. window.history.pushState({}, "title", "/testJest");
  2. delete window.location; window.location = { assign: jest.fn() };

    it("should navigate to the new URL", () => { const myUrl …

javascript unit-testing window location-href jestjs

5
推荐指数
2
解决办法
3380
查看次数

JavaScript(_. isFunction)代码优化

我需要检查一个js对象,如果是一个函数,我认为这个代码应该这样做:

typeof param === 'function'

然后我认为用_.isFunction源代码检查将是一个很好的想法.

if下面的检查包含下面的包裹,我不确定究竟是什么或意味着什么.如果有人可以解释这将是伟大的.谢谢

// Optimize `isFunction` if appropriate.
if (typeof (/./) !== 'function') {
   ..
}
Run Code Online (Sandbox Code Playgroud)

javascript function underscore.js

3
推荐指数
1
解决办法
170
查看次数

如何改进jQuery代码

我有以下语法.我想知道这部分$($(this).parent().siblings('div')[0])是否可以通过直接访问jQuery对象而不需要$();再次使用来更优雅地编写.

我使用.parent().siblings并没有使用类,div因为我想在类不同的地方重用代码.

$('textarea').click(function(){
     $($(this).parent().siblings('div')[0]).html('<span>140</span>');
     $($(this).parent().siblings('div')[1]).html('<span>Reply</span>');
});

<div class="post_area2">
    <div class="wrap_area2 left">
        <textarea></textarea> 
    </div>
    <div class="word_c left"></div>
    <div class="submit left"></div>   
</div>
Run Code Online (Sandbox Code Playgroud)

javascript jquery

1
推荐指数
1
解决办法
163
查看次数

获取所有数据构造器上没有模式匹配的类型的数据

有没有办法抽象数据类型并只使用值?

data Color a = Blue a | Green a | Red a | Yellow a | Magenta a deriving (Show)

就像是 :

calcColor :: Color a -> Color a -> Maybe a
calcColor (_ x) (_ y) = Just $ x + y
Run Code Online (Sandbox Code Playgroud)

它不一定在函数声明中。我正在考虑的一个选择是拥有类似的东西,fromJust但即使这样也感觉有点多余。

fromColor :: Color a -> a
fromColor (Blue t) = t
fromColor (Red t) = t
fromColor (Green t) = t
fromColor (Yellow t) = t
Run Code Online (Sandbox Code Playgroud)

编辑 - 添加上下文和更多说明

从我设法质疑它的方式来看,标题可能看起来像一个重复的问题。

我不确定,但这是由社区决定的。我对 Haskell 很陌生,所以也许我的问题看起来很愚蠢,但我仍然认为这是一个有效的案例,因为我实际上遇到了这种情况。 …

haskell types pattern-matching

0
推荐指数
1
解决办法
86
查看次数