qLN北方站长站使用对象参数qLN北方站长站
当一个函数被指定一个值,像在this.get = function (n) { … }中,它应该以一个分号来结束所有的赋值语句。 Webjx.Com qLN北方站长站
| function yg_cookie() {qLN北方站长站 this.get = function (n) {qLN北方站长站 var v = '',qLN北方站长站 c = ' ' + document.cookie + ';',qLN北方站长站 s = c.indexOf((' ' + n + '='));qLN北方站长站 if (s >= 0) {qLN北方站长站 s += n.length + 2;qLN北方站长站 v = unescape(c.substring(s, c.indexOf(';', s)));qLN北方站长站 }qLN北方站长站 return v;qLN北方站长站 };qLN北方站长站 this.set = function (n,v,e) {qLN北方站长站 document.cookie = n + "=" + escape(v) +qLN北方站长站 ";expires=" + (new Date(e * 1000)).toGMTString() + qLN北方站长站 qLN北方站长站 ";path=/" + ";domain=www.yahoo.com";qLN北方站长站 };qLN北方站长站 }qLN北方站长站 var _yc = new yg_cookie();qLN北方站长站 |
qLN北方站长站最后,我们看到yg_cookie是一个能产生一个无状态对象的构造器。我们一点也不需要构造器函数。我们能简单创建一个空对象,通过指派方法的方式来增加它。 qLN北方站长站
var _yc = new Object();qLN北方站长站 _yc.get = function (n) {qLN北方站长站 var v = '',qLN北方站长站 c = ' ' + document.cookie + ';',qLN北方站长站 s = c.indexOf((' ' + n + '='));qLN北方站长站 if (s >= 0) {qLN北方站长站 s += n.length + 2;qLN北方站长站 v = unescape(c.substring(s, c.indexOf(';', s)));qLN北方站长站 }qLN北方站长站 return v;qLN北方站长站 };qLN北方站长站 _yc.set = function (n,v,e) {qLN北方站长站 document.cookie = n + "=" + escape(v) +qLN北方站长站 ";expires=" + (new Date(e * 1000)).toGMTString() +qLN北方站长站 ";path=/" + ";domain=www.yahoo.com";qLN北方站长站 }; |
qLN北方站长站如果我们不需要支持Netscape3和IE4,我们能通过对象字面量来实现的更加优雅。 qLN北方站长站
var _yc = {qLN北方站长站 get: function (n) {qLN北方站长站 var v = '',qLN北方站长站 c = ' ' + document.cookie + ';',qLN北方站长站 s = c.indexOf((' ' + n + '='));qLN北方站长站 if (s >= 0) {qLN北方站长站 s += n.length + 2;qLN北方站长站 v = unescape(c.substring(s, c.indexOf(';', s)));qLN北方站长站 }qLN北方站长站 return v;qLN北方站长站 },qLN北方站长站 set: function (n,v,e) {qLN北方站长站 document.cookie = n + "=" + escape(v) +qLN北方站长站 ";expires=" + (new Date(e * 1000)).toGMTString() + qLN北方站长站 ";path=/" + ";domain=www.yahoo.com";qLN北方站长站 }qLN北方站长站 }; |
qLN北方站长站使用通用库 qLN北方站长站
此时对于处理cookies我们有几种方法。我们发现下一个事情是令人惊奇的,它是没有利用我们定义的方法的cookies处理方式代码。 qLN北方站长站
var b,qLN北方站长站 l = '',qLN北方站长站 n = '0',qLN北方站长站 y;qLN北方站长站 y = ' ' + document.cookie + ';';qLN北方站长站 if ((b = y.indexOf(' Y=v')) >= 0) {qLN北方站长站 y = y.substring(b, y.indexOf(';', b)) + '&';qLN北方站长站 if ((b = y.indexOf('l=')) >= 0) {qLN北方站长站 l = y.substring(b + 2, y.indexOf('&', b));qLN北方站长站 if ((b = y.indexOf('n=')) >= 0)qLN北方站长站 n = y.substring(b + 2, y.indexOf('&', b));qLN北方站长站 }qLN北方站长站 } |
qLN北方站长站它甚至复制了我们早前看到的同样技术。很有可能两块代码都改写自同一个有缺点的原稿。我们可以利用我们最近的工作来改进它: qLN北方站长站
var l = '',qLN北方站长站 n = '0',qLN北方站长站 y = _yc.get('Y') + '&',qLN北方站长站 b = y.indexOf('l=');qLN北方站长站 if (b >= 0) {qLN北方站长站 l = y.substring(b + 2, y.indexOf('&', b));qLN北方站长站 b = y.indexOf('n=');qLN北方站长站 if (b >= 0) {qLN北方站长站 n = y.substring(b + 2, y.indexOf('&', b));qLN北方站长站 }qLN北方站长站 } |
qLN北方站长站代码重用是软件工程的圣杯。我们可以想象通过最先进的技术避免大量的必需的手工工作来得到高效率。这里我们发现一种失败,使用一种方法需要在相邻需要它的地方进行定义。 qLN北方站长站
软件的体系结构倾向于反映生产他们的组织结构。在这种情况下,我们看到一个组织由于缺乏流程的连通意识而导致的明显低效的证据。风格的应用是吹毛求疵的,因为如果我们理解这几条是什么才有可能正确的一起使用这几条。 qLN北方站长站
共有 0 位网友发表了评论 此处只显示部分留言 点击查看完整评论页面