怎么给这个js原型弄个变量进去。。。。。。。。

kiddkyd 2012-04-24 07:29:52

(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这个变量应该定义在哪里,才可以这样用?
...全文
301 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
打字员 2012-05-09
  • 打赏
  • 举报
回复

(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'));
kiddkyd 2012-05-01
  • 打赏
  • 举报
回复
自己顶一下
kiddkyd 2012-04-27
  • 打赏
  • 举报
回复
回3楼。



alert(XP().changeRootURL(123).rootURL)//成功
alert(XP().rootURL);//失败
峭沙 2012-04-27
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]

如果四楼所说属实,那确实有点担忧。。。
jquery是不是也有你说的这种情况?

其实我最早想实现的效果是直接写XP.,不用写XP().
[/Quote]不是如果,是事实就是那样,jquery也一样,只是jquery创建的对象保存着相应的DOM对象,2个$(selector)创建的对象因为相同的选择器查找到的DOM对象是相同的,所以才会给你是同一个对象的假象。
峭沙 2012-04-27
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 的回复:]
这叫“盲目的模仿”吗? 不同意你的这句。看来你的jsoop也不整么滴
[/Quote]不是盲目的模仿那是什么?我的JSOOP确实不怎么滴,只是练练手顺便巩固下JS OOP思想而已,不过从“盲目的模仿”能推出JSOOP不怎么滴,我对你的逻辑能力表示怀疑
kiddkyd 2012-04-26
  • 打赏
  • 举报
回复
自己顶顶。。。。
回头是岸 2012-04-26
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

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

这叫“盲目的模仿”吗? 不同意你的这句。看来你的jsoop也不整么滴
未知数 2012-04-26
  • 打赏
  • 举报
回复
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]);
}
};

001007009 2012-04-25
  • 打赏
  • 举报
回复

(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);



这个意思?
KingViker 2012-04-25
  • 打赏
  • 举报
回复
三楼说的应该符合搂住的意思,四楼的兄弟说的应该不错,可能搂住不了解原型的意义,建议搂住补习一下
峭沙 2012-04-25
  • 打赏
  • 举报
回复
盲目模仿jQuery,你这样写每次XP()都是创建一个新对象,明白吗?
alert(XP() === XP()) // false
kiddkyd 2012-04-25
  • 打赏
  • 举报
回复
如果四楼所说属实,那确实有点担忧。。。
jquery是不是也有你说的这种情况?

其实我最早想实现的效果是直接写XP.,不用写XP().
kiddkyd 2012-04-24
  • 打赏
  • 举报
回复
这样写是可以读取,但是无法赋值。等于是写死了。
豪情 2012-04-24
  • 打赏
  • 举报
回复

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

87,922

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧