UED TEAM

我们的团队博客

登录 | RSS | 收藏本站
10-07
20

jQuery实例为什么在firebug下表现出数组的特征

作者:robot 日期:10-07-20 时间:8:53 上午

在firebug下面用console.debug($(‘a’))打印jQuery()返回值时,会发现控制台输出是一个数组,但我们知道jQuery()返回的确实一个对象,只不过这个对象有length属性和数字的下标,最重要的是还有一个splice方法。只要满足这三点,就会在控制台输出一个数组。自己建了个例子模拟一下。

function Foo() {
    return new Foo.prototype.init();
}
Foo.prototype = {
    init: function() {
        this.length = 1;
        this[0] = 'hello world';
        return this;
    },
    say: function() {
        alert('hi');
    },
    length: 0,
    splice: [].splice
}
Foo.prototype.init.prototype = Foo.prototype;

Foo();

PS: 如果想用firebug打印完整的jQuery对象,请用console.dir()。

作者:周明智
[本站团队成员原创文章,转载请注明来源,并保留链接地址,谢谢]

Tags: ,

相关文章

随机文章

jQuery实例为什么在firebug下表现出数组的特征 评论 (5)

  • pyzy

    确切的说,返回的是一个JSON对象,length只是属性,标识筛选字串匹配的HTML对象数量.

  • 湖南SEO

    jQuery 很厉害。

  • 阅网博客

    明智兄挺细心的!

  • 77

    我建议你再看看源码, length是怎么来的,,
    splice是那样追加的, 但这不是js 对象拥有 数组特性的原因。

    可以给你个提示, 看js select到结果后是怎么追加到jq对象里的, 我想是push吧。。。。

    var c = {};
    c.push = [].push;
    c.push(‘hehe’);

    再看。。。一切明了。先有鸡还是先有蛋就已经很清楚了。

  • 周 明智

    你说的没错,不过我这里是在说firebug控制台的问题,例子中的length和下标都是随便加进来用来模拟的。

发表评论

评论只需审核一次,以后网友可以继续使用原来ID,邮箱进行回复:)