发表于: 2017-04-01 22:59:04
3 1299
任务三
今天完成的事情
- 1.完成任务三的基本样式
- 2.学习数据传输的几种基本方式
- 3.整理学习笔记。
明天计划的事情
- 1.将任务二的数据传送到当前页面
- 2.完成页面身份查看和身份传递功能
遇到的问题
1.对于如何传输数据,之前一直使用的是session,稍微大一点的数据都放在数据库,cookie和localstroge没怎么使用过,所以不太熟,localStorage, 可以在对本地数据进行增删查改,但是localStorage是html5才有的,可能一些老的浏览器不支持,所以需要使用cookie来做替代方案(session一般给后台使用)。有能力的可以尝试自己封装一个新的具有兼容性写法的localStorage函数。
这是网上的一种写法,cookiestroge比较长,我就不复制了,在《JavaScript权威指南》第五版里有一个一个cookieStorage代码,可以参考一下。
window.myStorage = (new (function(){
var storage; //声明一个变量,用于确定使用哪个本地存储函数
if(window.localStorage){
storage = localStorage; //当localStorage存在,使用H5方式
}
else{
storage = cookieStorage; //当localStorage不存在,使用兼容方式
}
this.setItem = function(key, value){
storage.setItem(key, value);
};
this.getItem = function(name){
return storage.getItem(name);
};
this.removeItem = function(key){
storage.removeItem(key);
};
this.clear = function(){
storage.clear();
};
})());
收获
- 1.学会了传输数据的几种方法以及他们之间的差异。
js学习笔记(主要摘录自 阮一峰-js标准参考教程)
函数
函数的声明
1 function命令
function print(s) {
console.log(s);
}
2 函数表达式
var print = function(s) {
console.log(s);
};
这种写法是将匿名函数赋值给一个变量。
采用函数表达式声明函数时,function命令后面不带有函数名。如果加上函数名,该函数名只在函数体内部有效,在函数体外部无效。
var print = function x(){
console.log(typeof x);
};
在这种写法中,只能在函数内部访问到x,在函数外是无法访问到x的,而这个x是指函数本身,这样写的好处是除错工具显示函数调用栈时,将显示函数名,而不再显示这里是一个匿名函数,方便我们更好的调试代码,同时这也是不太推荐使用匿名函数的原因。
3 构造函数
var add = new Function(
'x',
'y',
'return x + y'
);
// 等同于
function add(x, y) {
return x + y;
}
函数也是对象类型,所以这里调用的是系统内置的Function方法来创建一个add对象。你可以传递任意数量的参数给Function构造函数,只有最后一个参数会被当做函数体,如果只有一个参数,该参数就是函数体。
但是总的来说,这种声明函数的方式非常不直观,几乎无人使用。
函数的重复声明
如果同一个函数被多次声明,后面的声明就会覆盖前面的声明。而且,由于函数名的提升,前一次声明在任何时候都是无效的,这一点要特别注意。
函数的地位
JavaScript语言将函数看作一种值,与其它值(数值、字符串、布尔值等等)地位相同。凡是可以使用值的地方,就能使用函数。
函数名的提升
JavaScript引擎将函数名视同变量名,所以采用function命令声明函数时,整个函数会像变量声明一样,被提升到代码头部。
f();
function sayHello() {
}
像上面这段代码不会报错。但是对于下面这段代码就会报错:
f();
var f = function (){};
上面的代码等同于下面的形式。
var f;
f();
f = function () {};
因为f在被调用前没有被赋值,所以会报错。对于第一种为什么可以第二种不可以,我说一点个人的理解。第一种方法,function命令声明的代码区块,就是一个函数。function命令后面是函数名,函数名后面是一对圆括号,里面是传入函数的参数。函数体放在大括号里面。这里声明的是一大段代码块,函数的赋值是在代码块中完成的,而第二种声明的是一个变量,函数的赋值是变量声明后进行的。(个人理解,不一定对)
对于下面这段代码:
var f = function() {
console.log('1');
}
function f() {
console.log('2');
}
f()
结果是1。
评论