求大神们赐教js cookie对象问题
在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中测试以上代码。