(function () {
    var XP = window.XP = function () {        return new XP.fn.init();
    };
    XP.fn = XP.prototype = {
        
        init: function () { return this; },
        /**
        * 获取通过URL传递的参数值
        * @param {String} name 参数的名称
        */
        getPara: function (name) {
            var r = new RegExp("(\\?|#|&)" + name + "=([^&#]*)(&|#|$)");
            var m = location.href.match(r);
            return (!m ? "" : m[2]);
        }
    };    XP.fn.init.prototype = XP.fn;
})();我想用的时候可以这样
XP().rootURL='某网址';
alert(XP().rootURL);
那么rootURL这个变量应该定义在哪里,才可以这样用?

解决方案 »

  1.   


    XP.prototype = {
          rootURL: '某网址',
          init: //
    }
      

  2.   


    (function () {
        var XP = window.XP = function () {        return new XP.fn.init();
        };
        XP.fn = XP.prototype = {
            
            init: function () {
    this.rootURL = 'default';
    return this;
    },
    changeRootURL: function(v){
    this.rootURL = v;
    return this;
    },
            /**
            * 获取通过URL传递的参数值
            * @param {String} name 参数的名称
            */
            getPara: function (name) {
                var r = new RegExp("(\\?|#|&)" + name + "=([^&#]*)(&|#|$)");
                var m = location.href.match(r);
                return (!m ? "" : m[2]);
            }
        };    XP.fn.init.prototype = XP.fn;
    })();
    alert(XP().changeRootURL(123).rootURL)
    alert(XP().rootURL);这个意思?
      

  3.   

    盲目模仿jQuery,你这样写每次XP()都是创建一个新对象,明白吗?
    alert(XP() === XP())  // false
      

  4.   

    如果四楼所说属实,那确实有点担忧
    jquery是不是也有你说的这种情况?其实我最早想实现的效果是直接写XP.,不用写XP().
      

  5.   

    XP.fn = XP.prototype = {
            
            init: function () {
                    this.rootURL='.aspx';//就这么简单
                    return this; 
                },
            /**
            * 获取通过URL传递的参数值
            * @param {String} name 参数的名称
            */
            getPara: function (name) {
                var r = new RegExp("(\\?|#|&)" + name + "=([^&#]*)(&|#|$)");
                var m = location.href.match(r);
                return (!m ? "" : m[2]);
            }
        };
      

  6.   


     这叫“盲目的模仿”吗? 不同意你的这句。看来你的jsoop也不整么滴
      

  7.   

    不是盲目的模仿那是什么?我的JSOOP确实不怎么滴,只是练练手顺便巩固下JS OOP思想而已,不过从“盲目的模仿”能推出JSOOP不怎么滴,我对你的逻辑能力表示怀疑
      

  8.   

    不是如果,是事实就是那样,jquery也一样,只是jquery创建的对象保存着相应的DOM对象,2个$(selector)创建的对象因为相同的选择器查找到的DOM对象是相同的,所以才会给你是同一个对象的假象。
      

  9.   

    回3楼。alert(XP().changeRootURL(123).rootURL)//成功
    alert(XP().rootURL);//失败
      

  10.   


    (function(w) {
    var xp = function() {
    return new xp.fn.init();
    }
    xp.rootURL = location.href + '?a=b';
    xp.fn = xp.prototype = {
    init: function() {
    return this;
    },
      getParam: function (name) {
                var r = new RegExp("(\\?|#|&)" + name + "=([^&#]*)(&|#|$)");
                var m = xp.rootURL.match(r);
                return (!m ? "" : m[2]);
            }
    };
    xp.fn.init.prototype = xp.fn;
    if(typeof(w.xp) == 'undefined') {
    w.xp = xp;
    }
    })(window);alert(xp.rootURL);
    alert(xp().getParam('a'));
    xp.rootURL = location.href + '?a=c';
    alert(xp.rootURL);
    alert(xp().getParam('a'));