求大神们赐教js cookie对象问题 js cookie string 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 “那么第二次给document.cookie赋值的时候应该完全覆盖第一次赋值”有什么根据? document.setCookie= function('xxxx'){}document.getCookie=function(){ return 'xxxx';}属性访问cookie就是一个属性 面向对象中的属性 并不是直接意义上的 = 赋值当你调用 cookie = 'xxxxx'的时候实际调用的是 setCookie('xxxxxx'); 首先了解一下Cookiede格式和内容:document.cookie="name=value;expires=DATE;path=PATH";后面还有几个属性没有写第一个为cookie的名字(每个cookie都有一个名字,不然就没法区分哦!) 第二个为有效日期LZ的问题中有两个name而且值不一样 说明是两个不同的cookie... var a = "a";a = "b";alert(a);结果应该是“b”不是“ab”吧 那估计是这样了...就是搞不懂着内在怎么实现的!也不像是模拟的java运算符重载! 那估计是这样了...就是搞不懂着内在怎么实现的!也不像是模拟的java运算符重载!不要估计 就是这样 这样才叫属性 那估计是这样了...就是搞不懂着内在怎么实现的!也不像是模拟的java运算符重载!不要估计 就是这样 这样才叫属性恩..看来我面相对象的思想还不成熟!需要慢慢修炼..谢大虾赐教..改日必当猴宝 var a = "a";a = "b";alert(a);结果应该是“b”不是“ab”吧你这里的a是变量,cookie不是变量~楼上也都解释的差不多了,简单来讲就是每“document.cookie=...”一次,就往cookie里放一个字符串格式的键值对,最后所有的键值对一起才构成完整的cookie。 var cookie 这么写不对的吧、、 难道cookie是关键字!就算不是关键字 按照我的理解也是 “声明一个交过cookie的变量”。。 我当时的思维:1.document.cookie 并不是简简单单的string!2.假设其为Object.3.var cookie = document.cookie; 就拿到一个Object的引用。4.通过改变 cookie引用和直接改变document.cookie的结果一样!5.实验结果越是不同!6.最终结果:A.当把document.cookie当右值使用,表现出String的特性! B.当document.cookie当左值使用时,表现出Object的特性!7.至于怎么实现的,至今没搞懂!以后再看吧 很明显,document.cookie= ***的赋值方式,是累加的。 不像是累加,document.cookie="star=escape('Jordan')"如果cookie中已经有了name为star的,不累加而是改变原来的值! 楼主楼主,我来给你解释!!在C++中,有一种东西叫操作符重载,这里完全可以理解为赋值符号“=”被重载了。好吧,你要是说这里是js,不用操作符重载的概念解释也ok。在javascript 1.8版本中(不好意思,不知道是不是1.8,反正最新的就是),有一种东西叫属性的setter和getter,其中的setter就是用来处理属性的赋值操作的。新版中,object可以写成这样:var obj = { get a(){ return 1;}, set a(){ }};console.log(a);我们来构造一个和cookie属性一样神奇的属性。var obj = (function(){ var data = {}; return { set cookie(c){ c = c.split('='); if(c[0] && c[1]) { data[c[0]] = c[1]; } }, get cookie(){ var r = []; for(var i in data) { r.push(i+'='+data[i]); } return r.join(';'); } }})();obj.cookie = "sid=fdsafasf";obj.cookie = "lang=zh-cn";console.log(obj.cookie)://sid=fdsafasf;lang=zh-cn这里只是简单的模仿了document.cookie的运作方法。LZ的疑惑关键在于这个赋值号,其实这个符号和普通的变量的赋值不一样,它在引擎内部被重载了,实际运行了某个方法。请在最新的chrome中测试以上代码。 笔误,更正,第一段代码最后一行应为console.log(obj.a);var obj = { get a(){ return 1;}, set a(){ }};console.log(obj.a); 不像是累加,document.cookie="star=escape('Jordan')"如果cookie中已经有了name为star的,不累加而是改变原来的值!是啊,就像session一样,你有对应的name就不会生成新的了,看是否累加,你每次赋值后,alert打印下cookie的值就知道了。 不像是累加,document.cookie="star=escape('Jordan')"如果cookie中已经有了name为star的,不累加而是改变原来的值!是啊,就像session一样,你有对应的name就不会生成新的了,看是否累加,你每次赋值后,alert打印下cookie的值就知道了。其实我就是想知道它内部是怎么实现的! 不像是累加,document.cookie="star=escape('Jordan')"如果cookie中已经有了name为star的,不累加而是改变原来的值!是啊,就像session一样,你有对应的name就不会生成新的了,看是否累加,你每次赋值后,alert打印下cookie的值就知道了。其实我就是想知道它内部是怎么实现的!就是简单的字符串操作啊,你可以模拟一下。 不像是累加,document.cookie="star=escape('Jordan')"如果cookie中已经有了name为star的,不累加而是改变原来的值!是啊,就像session一样,你有对应的name就不会生成新的了,看是否累加,你每次赋值后,alert打印下cookie的值就知道了。其实我就是想知道它内部是怎么实现的!就是简单的字符串操作啊,你可以模拟一下。要是cookie是简单的属性,第二次赋值,应该会被覆盖,然而cookie显然不是。var my = {}; my.name = "aaa"; my.name ="bbb"; alert(my.name);name属性只记住了最后的bbb,然后document.cookie不然。这就是LZ开这个贴的目的。cookie岂止不是简单字符串赋值,也不是简单的字符串拼接操作,其实cookie操作时,浏览器内部还会有互斥锁,因为如果多tab同时对同一个域下的某个同名cookie写操作,没有互斥锁那显然要出问题,和数据库锁的概念是相同的。题外话了。 不像是累加,document.cookie="star=escape('Jordan')"如果cookie中已经有了name为star的,不累加而是改变原来的值!是啊,就像session一样,你有对应的name就不会生成新的了,看是否累加,你每次赋值后,alert打印下cookie的值就知道了。其实我就是想知道它内部是怎么实现的!就是简单的字符串操作啊,你可以模拟一下。要是cookie是简单的属性,第二次赋值,应该会被覆盖,然而cookie显然不是。var my = {}; my.name = "aaa"; my.name ="bbb"; alert(my.name);name属性只记住了最后的bbb,然后document.cookie不然。这就是LZ开这个贴的目的。cookie岂止不是简单字符串赋值,也不是简单的字符串拼接操作,其实cookie操作时,浏览器内部还会有互斥锁,因为如果多tab同时对同一个域下的某个同名cookie写操作,没有互斥锁那显然要出问题,和数据库锁的概念是相同的。题外话了。tab页是共享sission和cookie的,新窗口才是不同的session和cookie,至于cookie内部怎么实现的,我觉得不应该有那么复杂吧。 不像是累加,document.cookie="star=escape('Jordan')"如果cookie中已经有了name为star的,不累加而是改变原来的值!是啊,就像session一样,你有对应的name就不会生成新的了,看是否累加,你每次赋值后,alert打印下cookie的值就知道了。其实我就是想知道它内部是怎么实现的!就是简单的字符串操作啊,你可以模拟一下。要是cookie是简单的属性,第二次赋值,应该会被覆盖,然而cookie显然不是。var my = {}; my.name = "aaa"; my.name ="bbb"; alert(my.name);name属性只记住了最后的bbb,然后document.cookie不然。这就是LZ开这个贴的目的。cookie岂止不是简单字符串赋值,也不是简单的字符串拼接操作,其实cookie操作时,浏览器内部还会有互斥锁,因为如果多tab同时对同一个域下的某个同名cookie写操作,没有互斥锁那显然要出问题,和数据库锁的概念是相同的。题外话了。tab页是共享sission和cookie的,新窗口才是不同的session和cookie,至于cookie内部怎么实现的,我觉得不应该有那么复杂吧。正因为共享cookie,所以才需要写互斥啊。LZ说的是cookie作为document的属性,和js中普通的属性表现的不一样,这才是题主的问题所在。敢说LZ提出来的不对么?document.cookie这个属性和js中其他内置或者自定义的对象的属性对比一下,难道不古怪么? 仿qq商城的jquery幻灯片特效 求一个验证window文件后缀的js正则 求输入控件的自动聚焦和键盘切换输入焦点的JS代码 带延伸窗口的超链接 再问。 请教,javascript如何将Unicode转换成Shift-jis? 有问题向高手请教,请高手赐教! [正则表达式]想实现替换[]或()中的数字 这样的滚动效果怎么做? 关于回车的处理……?type=hidden中的???? asp.net的问题需要用JS来解决,所以就来这里啊,大家要帮忙哦~~~~~ jquery sortable 帮看看下面的代码,解决一个问题。
有什么根据?
}document.getCookie=function(){
return 'xxxx';
}属性访问
cookie就是一个属性 面向对象中的属性 并不是直接意义上的 = 赋值
当你调用 cookie = 'xxxxx'的时候实际调用的是 setCookie('xxxxxx');
document.cookie="name=value;expires=DATE;path=PATH";后面还有几个属性没有写
第一个为cookie的名字(每个cookie都有一个名字,不然就没法区分哦!) 第二个为有效日期
LZ的问题中有两个name而且值不一样 说明是两个不同的cookie...
a = "b";
alert(a);
结果应该是“b”不是“ab”吧
不要估计 就是这样 这样才叫属性
不要估计 就是这样 这样才叫属性
恩..看来我面相对象的思想还不成熟!需要慢慢修炼..谢大虾赐教..改日必当猴宝
a = "b";
alert(a);
结果应该是“b”不是“ab”吧
你这里的a是变量,cookie不是变量~
楼上也都解释的差不多了,简单来讲就是每“document.cookie=...”一次,就往cookie里放一个字符串格式的键值对,最后所有的键值对一起才构成完整的cookie。
难道cookie是关键字!就算不是关键字 按照我的理解也是 “声明一个交过cookie的变量”。。
1.document.cookie 并不是简简单单的string!
2.假设其为Object.
3.var cookie = document.cookie; 就拿到一个Object的引用。
4.通过改变 cookie引用和直接改变document.cookie的结果一样!
5.实验结果越是不同!
6.最终结果:A.当把document.cookie当右值使用,表现出String的特性!
B.当document.cookie当左值使用时,表现出Object的特性!
7.至于怎么实现的,至今没搞懂!以后再看吧
是累加的。
如果cookie中已经有了name为star的,不累加而是改变原来的值!
get a(){ return 1;},
set a(){ }
};
console.log(a);
我们来构造一个和cookie属性一样神奇的属性。var obj = (function(){
var data = {};
return {
set cookie(c){
c = c.split('=');
if(c[0] && c[1]) {
data[c[0]] = c[1];
}
},
get cookie(){
var r = [];
for(var i in data) {
r.push(i+'='+data[i]);
}
return r.join(';');
}
}
})();obj.cookie = "sid=fdsafasf";
obj.cookie = "lang=zh-cn";
console.log(obj.cookie)://sid=fdsafasf;lang=zh-cn
这里只是简单的模仿了document.cookie的运作方法。
LZ的疑惑关键在于这个赋值号,其实这个符号和普通的变量的赋值不一样,它在引擎内部被重载了,实际运行了某个方法。请在最新的chrome中测试以上代码。
get a(){ return 1;},
set a(){ }
};
console.log(obj.a);
如果cookie中已经有了name为star的,不累加而是改变原来的值!是啊,就像session一样,你有对应的name就不会生成新的了,
看是否累加,你每次赋值后,alert打印下cookie的值就知道了。
如果cookie中已经有了name为star的,不累加而是改变原来的值!是啊,就像session一样,你有对应的name就不会生成新的了,
看是否累加,你每次赋值后,alert打印下cookie的值就知道了。
其实我就是想知道它内部是怎么实现的!
如果cookie中已经有了name为star的,不累加而是改变原来的值!是啊,就像session一样,你有对应的name就不会生成新的了,
看是否累加,你每次赋值后,alert打印下cookie的值就知道了。
其实我就是想知道它内部是怎么实现的!就是简单的字符串操作啊,你可以模拟一下。
如果cookie中已经有了name为star的,不累加而是改变原来的值!是啊,就像session一样,你有对应的name就不会生成新的了,
看是否累加,你每次赋值后,alert打印下cookie的值就知道了。
其实我就是想知道它内部是怎么实现的!就是简单的字符串操作啊,你可以模拟一下。要是cookie是简单的属性,第二次赋值,应该会被覆盖,然而cookie显然不是。var my = {}; my.name = "aaa"; my.name ="bbb"; alert(my.name);name属性只记住了最后的bbb,然后document.cookie不然。这就是LZ开这个贴的目的。cookie岂止不是简单字符串赋值,也不是简单的字符串拼接操作,其实cookie操作时,浏览器内部还会有互斥锁,因为如果多tab同时对同一个域下的某个同名cookie写操作,没有互斥锁那显然要出问题,和数据库锁的概念是相同的。题外话了。
如果cookie中已经有了name为star的,不累加而是改变原来的值!是啊,就像session一样,你有对应的name就不会生成新的了,
看是否累加,你每次赋值后,alert打印下cookie的值就知道了。
其实我就是想知道它内部是怎么实现的!就是简单的字符串操作啊,你可以模拟一下。要是cookie是简单的属性,第二次赋值,应该会被覆盖,然而cookie显然不是。var my = {}; my.name = "aaa"; my.name ="bbb"; alert(my.name);name属性只记住了最后的bbb,然后document.cookie不然。这就是LZ开这个贴的目的。cookie岂止不是简单字符串赋值,也不是简单的字符串拼接操作,其实cookie操作时,浏览器内部还会有互斥锁,因为如果多tab同时对同一个域下的某个同名cookie写操作,没有互斥锁那显然要出问题,和数据库锁的概念是相同的。题外话了。tab页是共享sission和cookie的,新窗口才是不同的session和cookie,至于cookie内部怎么实现的,我觉得不应该有那么复杂吧。
如果cookie中已经有了name为star的,不累加而是改变原来的值!是啊,就像session一样,你有对应的name就不会生成新的了,
看是否累加,你每次赋值后,alert打印下cookie的值就知道了。
其实我就是想知道它内部是怎么实现的!就是简单的字符串操作啊,你可以模拟一下。要是cookie是简单的属性,第二次赋值,应该会被覆盖,然而cookie显然不是。var my = {}; my.name = "aaa"; my.name ="bbb"; alert(my.name);name属性只记住了最后的bbb,然后document.cookie不然。这就是LZ开这个贴的目的。cookie岂止不是简单字符串赋值,也不是简单的字符串拼接操作,其实cookie操作时,浏览器内部还会有互斥锁,因为如果多tab同时对同一个域下的某个同名cookie写操作,没有互斥锁那显然要出问题,和数据库锁的概念是相同的。题外话了。tab页是共享sission和cookie的,新窗口才是不同的session和cookie,至于cookie内部怎么实现的,我觉得不应该有那么复杂吧。正因为共享cookie,所以才需要写互斥啊。LZ说的是cookie作为document的属性,和js中普通的属性表现的不一样,这才是题主的问题所在。
敢说LZ提出来的不对么?document.cookie这个属性和js中其他内置或者自定义的对象的属性对比一下,难道不古怪么?