问题标签 [chaining]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
195 浏览

javascript - 将链式方法附加到 JavaScript 中的元素集合

这 - 至少目前 - 纯粹是实验,但我很好奇:有没有办法将方法(通过原型)附加到元素集合?我已经测试了以下代码:

目前,它在 Opera 中完美运行;正如预期的那样,对所有 div 元素调用 _ 方法,然后依次将传递给它的字符串 eval()'ing每个元素上。请注意,_ 方法允许链接,这也得到了证明,调用 _ 将预测的x迭代器变量附加到每个元素的 innerHTML。

现在,两个问题...

首先,有没有更好的方法来解决这个问题?我一直希望我能做到document.getElementsByTagName('div').style.backgroundColor = "red";,但可惜,它还没有实现。这就是我首先这样做的原因,也是我如此简洁地命名该方法的原因;我试图尽可能地模仿它。

其次,假设这是一个理智的用法,我将如何让它在 Firefox 中工作?该浏览器相当于NodeListis HTMLCollection,但尝试对后者进行原型设计根本不会成功。建议?

0 投票
2 回答
316 浏览

c# - 链接 .NET 委托时,如何(重新)使用原始实例?

假设我有以下 C# 代码:

测试表明 与b不是同一个实例c,因此显然+操作员似乎创建了委托的新实例。这是一个正确的假设吗?它是在b内部重用 -instance,还是只是将方法/目标信息复制到新实例?

我似乎无法找到+代表运算符的实现,Delegate 类似乎不包含它。

任何人都可以对这个问题有所了解吗?

我问的原因是我正在创建一些类,它们会像洋葱一样将自己分层,最外层将调用内层,获取一些委托,然后将更多方法附加到这些委托,我只是担心这样做会以某种方式改变我从内层获得的委托,在这种情况下,我需要返回副本/克隆,而不仅仅是内部引用。

请注意,这完全是我的库的内部代码,所以虽然我知道传递这样的内部数据结构通常是一个坏主意,但如果我可以安全地使用这些类,那么我会这样做。

0 投票
2 回答
3458 浏览

c# - 具有多个调用的构造函数链接

鉴于下面的代码,第一个 WebTestingApp 构造函数可以在返回新实例之前调用第二个构造函数吗?我想在构造函数中设置一些只读字段,并且没有复制/粘贴,我看不出我怎么做。

我觉得答案与构造函数链接有关,但我不知道该怎么做,因为第二个 WebTestingApp 构造函数隐式调用 base() (这很重要,因为类的外部用户不应该有提供 IRemoteFile 和 IWebServiceGateway 实例)。

这是基类 TestingApp 的构造函数:

WebTestingApp 派生自 TestingApp。S3File 和 WebServiceGateway 是单例。

0 投票
2 回答
878 浏览

java - java异常链接问题

想象一下我有以下方法:

在 JAVA API 中:

函数链:funcB() -> ByteBuffer.wrap()

我的问题是 funcB 为什么不需要围绕这个抛出异常的 java api 方法执行 try-catch 块。funcB 在没有 try-catch 块的情况下编译得很好。我相信答案与 java api 方法抛出异常但未声明为“抛出 IndexOutOfBoundsException”这一事实有关

函数链:funcA() -> funcB() -> ByteBuffer.wrap(...)

我的下一个问题是,当我将funcB更改为“funcB() throws IndexOutOfBoundsException”时,为什么 funcA 不需要捕获 funcB 抛出的异常?编译器是否深入挖掘并意识到 ByteBuffer.wrap(...) 没有声明为“wrap() throws IndexOutOfBoundsException”,所以所有调用者实际上不需要捕获任何东西,甚至是子调用者(在这种情况下是 funcB)被声明为“funcB throws IndexOutOfBoundsException”?

抱歉,如果这令人困惑或难以理解。

请帮忙。

吉布

0 投票
2 回答
306 浏览

jquery - jQuery:链接事件 - 代码更正

谁能告诉我如何用 fadeout('slow') 替换以下代码的滑动功能

而不是slideUp,我想快速使用FadeOut功能。我怎样才能链接事件?

我也想用 FadeIn('slow') 替换 SlideDown

提前致谢...

0 投票
2 回答
466 浏览

c++ - 在 c++ 中使用溢出链接中的 fstream 文件

我有一个文件,我想使用记录读取和写入二进制文件。一开始我有一个空文件,我想添加新记录,但是当我使用 seekp 功能时,位置在(-1)可以吗?因为当我检查时,我发现它没有向文件写入任何内容。见代码:

如果有人能告诉我为什么我不能在文件中写任何东西,我会非常感谢它。

提前致谢,

格雷格

0 投票
15 回答
41847 浏览

jquery - 如何使用 JQuery 链接或排队自定义函数?

我有多个函数可以对 HTML 的不同部分执行不同的动画。我想链接或排队这些函数,以便它们按顺序而不是同时运行动画。

我正在尝试按顺序自动执行多个事件,以使用户看起来像是在单击不同的按钮或链接。

我可能可以使用回调函数来做到这一点,但是我必须从不同的函数中提取所有动画并以正确的模式重新组合。

jquery“队列”有帮助吗?我无法理解队列的文档

例如,jQuery:

HTML:

谢谢。

编辑:我用计时器尝试过,但我认为有更好的方法。

编辑#2:

让我更具体一点。我有多个功能绑定到页面不同元素上的单击和悬停事件。通常这些函数彼此无关(它们不相互引用)。我想在不更改现有函数代码的情况下模拟用户经历这些事件。

0 投票
5 回答
29465 浏览

javascript - 基本的对象/函数链接如何在 javascript 中工作?

我正在尝试直接在脑海中了解执行 jQuery 风格的函数链接的原则。我的意思是:

我有一个例子可以工作,而另一个没有。我会在下面发布这些。我总是想学习一些东西是如何工作的首要原则,这样我就可以在它之上进行构建。到目前为止,我对链接的工作原理只有粗略和松散的了解,并且遇到了无法智能排除故障的错误。

我知道的:

  1. 函数必须返回自己,也就是“return this;”
  2. 可链接的函数必须驻留在父函数中,也就是在 jQuery 中,.css() 是 jQuery() 的子方法,因此 jQuery().css();
  3. 父函数应返回自身或自身的新实例。

这个例子有效:

但是这个没有:

0 投票
5 回答
3241 浏览

haskell - Haskell: monadic takeWhile?

我有一些从 Haskell 调用的用 C 语言编写的函数。这些函数返回IO (CInt). 有时我想运行所有函数,而不管它们返回什么,这很容易。为了示例代码,这是当前正在发生的事情的一般概念:

我得到了我想要的副作用,我不在乎结果。但是现在我需要在第一个没有返回我想要的结果的项目之后立即停止执行。假设返回值 4 或更高需要停止执行 - 那么我想要做的是:

这给了我这个错误:

这对我来说很有意义——结果仍然包含在 IO monad 中,我不能只比较 IO monad 中包含的两个值。我知道这正是 monad 的目的——将结果链接在一起并在满足某个条件时丢弃操作——但是在这种情况下是否有一种简单的方法可以“包装” IO monad 以在某个条件下停止执行链我选择的,没有写一个实例MonadPlus

为了 takeWhile 的目的,我可以从f中“取消”这些值吗?

这是适合函子的解决方案吗?Functors 还没有和我一起“点击”,但我有一种印象,这可能是使用它们的好情况。


更新:

@sth 有我想要的最接近的答案 - 事实上,这几乎正是我想要的,但我仍然想看看是否有一个标准解决方案不是明确递归的 - 这是 Haskell,之后全部!回顾我如何表达我的问题,现在我可以看到我对我想要的行为不够清楚。

f我上面用于示例的函数只是一个示例。真正的函数是用 C 语言编写的,专门用于它们的副作用。我不能使用@Tom 的建议,mapM_ f (takeWhile (<4) [0..5])因为在执行之前我不知道任何输入是否真的会导致成功或失败。

我实际上也不关心返回的列表——我只想调用 C 函数,直到列表用尽或第一个 C 函数返回失败代码。

在 C 风格的伪代码中,我的行为是:

同样,@sth 的答案执行了我想要的确切行为,除了结果可能(应该?)被丢弃。一个dropWhileM_函数对于我的目的来说是等价的。takeWhileM_为什么在 Control.Monad中没有这样的函数?我看到在邮件列表上有类似的讨论,但似乎没有任何结果。

0 投票
4 回答
22001 浏览

jquery - 链接 jQuery 选择器 :lt 和 :gt

我有一个超过 9 行的表。

如果我这样做 : $('table tr:gt(3):lt(6)'),最后我会收到 3 个还是 6 个元素,为什么?是所有选择器都应用于同一个主选区,还是依次应用于不同的选区?