发表于: 2017-04-01 22:59:04

3 1300


任务三

今天完成的事情

  1. 1.完成任务三的基本样式
  2. 2.学习数据传输的几种基本方式
  3. 3.整理学习笔记。
  4. 明天计划的事情

  1. 1.将任务二的数据传送到当前页面
  2. 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. 收获

  1. 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。





返回列表 返回列表
评论

    分享到