8种机械键盘轴体对比

本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选?

概述

使用 HTML5 可以在本地存储用户的浏览数据。

数据以 键/值 对存在, web网页的数据只允许该网页访问使用。

浏览器支持

Internet Explorer 8+,Firefox,Opera,Chrome,和 Safari支持Web 存储

注意: Internet Explorer 7 及更早IE版本不支持web 存储。

存储方式

HTML5支持两种存储方式:localStorage: 没有时间限制的数据存储

sessionStorage: 针对一个 session 的数据存储

localStorage 对象

localStorage 对象存储的数据没有时间限制。第二天、第二周或下一年之后,数据依然可用。

sessionStorage 对象

sessionStorage 方法针对一个 session 进行数据存储。当用户关闭浏览器窗口后,数据会被删除。

区别

localStorage 与 sessionStorage 的声明周期不同。

sessionStorage 会在浏览器关闭或用户清理缓存时生命结束,

localStorage 只有在用户清理缓存时生命结束。

API

localStorage 与 sessionStorage 都是 storage 对象,它们的 API 一样。

setItem()

setItem() 作为 Storage 接口的方法,接受一个键名和值作为参数,将会把键名添加到存储中,如果键名已存在,则更新其对应的值。

语法:storage.setItem(keyName, keyValue);

示例:

function (){
localStorage.setItem('bgcolor', 'red');
localStorage.setItem('font', 'Helvetica');
localStorage.setItem('image', 'myCat.png');
}
getItem()

getItem() 作为 Storage 接口的方法,接受一个键名(key name)作为参数,并返回对应键名的值(key's value)。

语法:var aValue = storage.getItem(keyName);

示例:

var currentColor = localStorage.getItem('bgcolor');
var currentFont = localStorage.getItem('font');
var currentImage = localStorage.getItem('image');
key()

key() 作为 Storage 接口的方法,接受一个数值 n 作为参数,返回存储对象第 n 个数据项的键名。

语法:var aKeyName = storage.key(key);

示例:

function (){
localStorage.setItem('bgcolor', 'yellow');
localStorage.setItem('font', 'Helvetica');
localStorage.setItem('image', 'cats.png');
localStorage.key(2);
}
removeItem()

Storage 接口的 removeItem() 方法,接受一个键名作为参数,会把该键名从存储中移除。

语法:storage.removeItem(keyName);

示例:

function (){
localStorage.setItem('bgcolor', 'red');
localStorage.setItem('font', 'Helvetica');
localStorage.setItem('image', 'myCat.png');
localStorage.removeItem('image');
}
clear()

clear() 是 Storage 接口的一个方法,调用它可以清空存储对象里所有的键值。

语法:storage.clear();

示例:1localStorage.clear();

length

length 是 Storage 接口的只读属性,返回一个整数,表示存储在 Storage 对象里的数据项(data items)数量。

语法:var aLength = storage.length;

示例:

function (){
localStorage.setItem('bgcolor', 'yellow');
localStorage.setItem('font', 'Helvetica');
localStorage.setItem('image', 'cats.png');
localStorage.length; // 返回 3
}

实际上

localStorage 是一个对象,当你直接输出 localStorage 的时候,就可以看到它的存储方式。

所以,localStorage 可以使用所有 Object 的方法。

console.log(localStorage);
/*
Storage {
bgcolor: "yellow",
font: "Helvetica",
image: "cats.png",
length: 3
}
*/
console.log(Object.keys(localStorage));
// ["bgcolor", "font", "image"]

可以把它当成普通对象一样使用:

(不过这样不友好,不建议)

console.log(localStorage.bgcolor);
// yellow
console.log(localStorage.getItem('bgcolor'));
// yellow
localStorage.bgcolor = 'blue';
console.log(localStorage.getItem('bgcolor'));
// blue
localStorage.setItem('bgcolor', 'green');
// green

提升

HTML5的本地存储都是只能存储 String 类型的数据,任何其他类型都会转成字符串存储。

例如:

localStorage.setItem('user', {
name: 'xiaoming',
age: 20,
});
localStorage.setItem('age', 20);
localStorage.getItem('user'); // '[object Object]'
localStorage.getItem('age'); // '20'

为了解决这些问题,最实在的方式是利用 JSON 进行序列化:

把对象序列化成字符串:


// 序列化
var user = JSON.stringify({
name: 'xiaoming',
age: 20,
});
// '{"name":"xiaoming","age":20}'
localStorage.setItem('user', user);
localStorage.getItem('user');
// '{"name":"xiaoming","age":20}'
// 反序列化
var _user = JSON.parse(
localStorage.getItem('user')
);
// { name: 'xiaoming', age: 20 }