JavaScript方法不能从jQuery的对象叫什么名字?(Javascript methods

2019-06-25 16:42发布

我读学习jQuery的1.3(乔纳森包布和卡尔斯威德伯格),并在排序表,他们使用.get()调用之前.sort()并表示

我们需要的jQuery对象转换成DOM节点的数组。 尽管jQuery的对象像在许多方面阵列,他们没有任何可用的本地阵列的方法,如的.sort()。

码:

$("#sort").click(function() {
        var posts = $("#posts_div .post");
        posts.sort(function(a, b) {
           return ($(a).text()) > ($(b).text());
        });       
        $.each(posts, function(index, post) { $("#posts_div").append(post); });
});​

所以,我试图做到这一点,而无需使用.get()但惊喜呢,即使工作没有.get()与最新的jQuery,但并没有与工作1.3

所以做了一些小提琴讲清楚

**不工作没有.get()的jQuery 1.2.6 **

与工作.get()的jQuery 1.2.6

没有工作.get()的jQuery 1.7.2

与工作.get()的jQuery 1.7.2

所以,很显然更早的jQuery对象没有曾经有过.sort()函数一样JavaScript数组? 但现在也有..

所以我的问题是什么是jQuery的对象尚不支持的功能,所以我们可以记住转换为JavaScript数组,使用前?

Answer 1:

jQuery的对象目前支持3种阵列方法:

var methods = 'pop push reverse shift sort splice unshift concat join slice toString indexOf lastIndexOf filter forEach every map some reduce reduceRight'.split(' ')
var implemented = $.grep(methods, function(m) {
    return $.prototype[m] == Array.prototype[m];
});
console.log(implemented); // => ["push", "sort", "splice"]

他们也有slice ,但它是不一样的slice的阵列有:

$.prototype.slice === Array.prototype.slice // => false


Answer 2:

jQuery不会有一个.sort方法,它只是没有正式记录在案,因为它不遵循jQuery方法常用格式。

所支持的唯一方法是在列出的API 。

.sort被实现为:

$.fn.sort = [].sort;

根据需要以同样的方式,你可以添加自己的附加阵列的方法。

$.fn.reverse = [].reverse;

如果.sort是不是在你的jQuery的版本中实现,实现它自己。



文章来源: Javascript methods that can not be called from jquery objects?