+ -
当前位置:首页 → 问答吧 → 仿jq写一个小js框架,现在出现问题,请各位帮忙解决一下,谢谢

仿jq写一个小js框架,现在出现问题,请各位帮忙解决一下,谢谢

时间:2009-09-02

来源:互联网

现在的代码是仿jq写的,只是要实现jq中的一小部分,代码如下:

(function(){
          
var window = this,
    undefined,
    _XICI = window.XICI,
    _$ = window.$,
    XICI = window.XICI = window.$ = function() {
        return new XICI.fn.init();
    };
    
XICI.fn = XICI.prototype = {
init: function() {
    var elements = new Array();
    
    for (var i = 0; i < arguments.length; i++) {
        var element = arguments;
        
        if (typeof element == 'string') {
            element = document.getElementById(element);
        }
        
        if (arguments.length == 1) { return element;}
        
        elements.push(element);
    }
    
    return elements;
},
alertme: function(){alert('alertme')}
};                

})();

现在外部调用 $.alertme(); 总是提示:对象不支持此属性或方法,但是$.fn.alertme()就没有问题,不知为何,上来请教大家,请帮忙帮忙,多谢!

作者: Alucard.G   发布时间: 2009-09-02

var window = this,
    undefined, //语法不正确
    _XICI = window.XICI, //此时这个匿名函数还没定义XICI,因此是undefined
    _$ = window.$, //此时这个匿名函数还没定义$,因此是undefined

作者: keakon   发布时间: 2009-09-02

引用
引用第1楼keakon于2009-09-02 11:03发表的  :
var window = this,
    undefined, //语法不正确
    _XICI = window.XICI, //此时这个匿名函数还没定义XICI,因此是undefined
    _$ = window.$, //此时这个匿名函数还没定义$,因此是undefined


谢谢,不过我还没顾及到你说的问题

请问我怎么做才能指向$,而不是$,fn ? 或者指向 XICI , 而不是XICI.fn ?

作者: Alucard.G   发布时间: 2009-09-02

现在$是window.$,是一个匿名函数

$.alertme()是$函数的一个属性,然而你并没有对这个匿名函数定义alertme属性,而是对XICI.prototype定义了这个属性

你应该参考一下jQuery源码中的这段
jQuery.extend = jQuery.fn.extend = function() {

作者: keakon   发布时间: 2009-09-02

相关阅读 更多