jQuery如何在返回数组的同时实现链式函数
How does jQuery chain functions while still returning an array?
已阅读
jQuery如何实现命令链?和jquery链是如何工作的?
我仍然想知道像这样的东西在jQuery中是如何可能的
var a = $('body')
// a returns [<body></body>], an array.
a.click()
// Seems like this should return an error if a returns an array, not a function.
链接的SO答案只告诉我如何做像
这样的事情a.b().c()
这是a()
我仍然不明白。我知道,通过返回this
链接工作,但它如何也返回一个数组本身?
使用jQuery源代码查看器站点,$ (http://james.padolsey.com/jquery/#v=1.9.1&fn=$)的定义如下:
function (selector, context) {
// The jQuery object is actually just the init constructor 'enhanced'
return new jQuery.fn.init(selector, context, rootjQuery);
}
注意它是从init()返回的。在init (http://james.padolsey.com/jquery/#v=1.9.1&fn=init)内部,我们看到它在最后调用了一个名为makeArray:
的函数init
function (selector, context, rootjQuery) {
var match, elem;
// rest of function defintion
return jQuery.makeArray(selector, this);
}
这给我们带来了问题的答案'如何jQuery链函数,同时仍然返回一个数组?'
makeArray (http://james.padolsey.com/jquery/#v=1.9.1&fn=jQuery.makeArray)看起来像这样:
makeArray
function (arr, results) {
var ret = results || [];
if (arr != null) {
if (isArraylike(Object(arr))) {
jQuery.merge(ret, typeof arr === "string" ? [arr] : arr);
} else {
core_push.call(ret, arr);
}
}
return ret;
}
相关文章:
- Node.js使用Series函数(模式?)实现流控制时出现意外结果
- 绑定函数时在IE7中未实现Javascript错误
- 可以使用属性赋值实现多个函数
- 如何在JavaScript中实现子函数
- 为什么在javascript中的模块模式中实现Lazy函数时范围会发生变化
- instanceOf函数在JavaScript中的实现
- Javascript Math.floor 函数失误或实现之谜
- 如何在nodejs中实现异步函数
- 不涉及私有“函数”的“Object.create”的自定义实现
- 使用getter和setter实现函数链接的方法
- 如何在Node.js上使用twitter api实现回调函数
- 如何在javascript中实现函数调用的任意链表
- 用子方法实现函数可以吗
- JavaScript解释器实现(函数)的策略——我说的有意义吗?
- 如何在JavaScript中实现函数数组?
- 用jquery递归实现函数
- 如何实现函数inArray (JavaScript)
- 实现函数重载
- Javascript:实现函数的单一出口点
- 在javascript中实现函数递归findById有比这更好的方法吗?