我的JavaScript回顾之路_07—0212—对象/localStorage和JSON数据/sessionStorage

1、事件万物一切皆为对象

定义一个类(行为和属性)--->实例化     

属性:这类共同拥有的东西      行为:这类共同能做的事情

2、定义对象的方法(必须要把类实例化出来)

法1: 定义方法函数,函数添加带有属性和行为

function person(){this.say = () => {}}  var myperson = new person();  myperson.say()

法2:定义一个对象,添加对象的属性和行为(不建议使用)

var myObj = new Object();   myObj.name='';   myObj.walk = () => {};   myObj.walk();

法3:健值对 key-value 主键唯一且不可重复(最常用的方法)

var myObject = {id:1, walk = function(){}, };    myObject.walk();

法4:定义一个类class(关键字)  类名的首字母大写

            class Person{

//构造方法
//对象被实例化时一定会调用
constructor(name, age){
this.name = name;
this.age = age;
}
watch(){
console.log(this.name + '在看《快乐大本营》')
}
                }
var person1 = new Person('zzxx', 17);
person1.watch();
var person2 = new Person('xxzz', 18);
person2.watch();

3、localStorage

let localStorage = window.localStorage; 

.setItem(key, value);//设置健值对
.getItem(key);//获取健值对key的value值
.clear();//清空

.removeItem(key);//移除

localStorage在没有对应key值的情况下,获取的值为null

var value = localStorage.getItem(key);

对象数组转换成JSON字符串 str = JSON.stringify(arr);

JSON字符串转换成对象数组 arr = JSON.parse(str);

$().html();

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<script src="jquery.js"></script>
	<style>
		.top{overflow: hidden;}
		.top>div{float: left; padding: 2%;}
		.shopList span{width: 22%; display: inline-block}
		.shopDetails span{width: 22%; display: inline-block}
		.center{text-align: center;}
		.bottom{width:60%;}
	</style>
</head>
<body>
	<div class="top">
		<div>
			<div class="title">1商品名称:手机</div>
			<div>价格¥<span class="price">666</span></div>
			<div class="type">苹果6</div>
			<div><button class="join" index="0">加入购物车</button></div>	
		</div>	
		<div>
			<div class="title">2商品名称:手机</div>
			<div>价格¥<span class="price">888</span></div>
			<div class="type">苹果7</div>
			<div><button class="join" index="1">加入购物车</button></div>	
		</div>
		<div>
			<div class="title">3商品名称:手机</div>
			<div>价格:¥<span class="price">999</span></div>
			<div class="type">苹果8</div>
			<div><button class="join" index="2">加入购物车</button></div>	
		</div>
	</div>	
	<div class="bottom">
		<div class="shopList center">
			<span>商品名称</span>
			<span>价格</span>
			<span>类型</span>
			<span>数量</span>
		</div>
		<div class="aa">
			
		</div>
	</div>
	<script>
		// 定义一个对象的方法
		//法1 定义方法函数,函数里面带有属性和行为(方法里面可以function(){}--->() => {})
		function person(){
			this.name = 'Nancy';
			this.age = 16;
			this.say = () => {
				console.log(this.name + " 今天天气很好!")
			}
		}
		var myperson = new person();//必须将类实例化出来
		myperson.say();
		myperson.name = 'Lucy';
		myperson.say();
		myperson.watch = function(){
			console.log(this.name + '在看《欢乐喜剧人》')
		}
		myperson.watch();
		//法2 定义一个对象添加属性和行为(不建议使用)
		var myObj = new Object();
		myObj.id = 1;
		myObj.name = 'zzz';
		myObj.walk = () => {
			console.log(myObj.name + "正在散步。")
		}
		myObj.walk();
		//法3 健值对 key-value 主键唯一且不可重复(常用方法)
		var myObject = {
			id:1,
			name:'Lily',
			age:16,
			walk: function(){
				console.log(this.name + "在写代码");
			},
		};
		myObject.walk();
		//法4 定义一个类class,类名的首字母大写
		class Person{
			//构造方法
			//对象被实例化时一定会调用
			constructor(name, age){
				this.name = name;
				this.age = age;
			}
			watch(){
				console.log(this.name + '在看《快乐大本营》')
			}
		}
		var person1 = new Person('zzxx', 17);
		person1.watch();
		var person2 = new Person('xxzz', 18);
		person2.watch();
		console.log(myperson, myObj, myObject, person1, person2)
	</script>
	<script>
		// .setItem(key, value);//设置健值对
		// .getItem(key);//获取健值对key的value值
		// .clear();//清空
		// .removeItem(key);//移除
		//localStorage在没有对应key值的情况下,获取的值为null
		let localStorage = window.localStorage;
		$(function(){
			$(".join").on('click', function(){
				var index = $(this).attr("index");
				var arr = [];
				var obj = {
					index: index * 1,
					title: $($(".title")[index]).text(),
					price: $($(".price")[index]).text() * 1,
					type:  $($(".type")[index]).text(),
				};
				obj.num = 1;
				var value = localStorage.getItem('shopCart');
				if(value != null){//第一次直接将对象转换为字符串即可,第二次之后都需先将字符串转换为数组
					arr = JSON.parse(value);
				}
				arr.push(obj);
				//对象存入数组
				var newArr = [];
				//同一商品合并
				for(let i = 0; i < arr.length; i++)
				{
					for(let j = i + 1; j < arr.length; j++)
					{
						if(arr[i].title == arr[j].title && arr[i].price == arr[j].price && arr[i].type == arr[j].type)
						{
							arr.splice(j, 1);
							j = -1;
							arr[i].num++;
							break;
						}
						console.log(arr[i], arr[j])
					}
					newArr.push(arr[i]);
				}
				localStorage.setItem('shopCart', JSON.stringify(newArr));//将对象转换成字符串
				var showValue = localStorage.getItem('shopCart');
				if(showValue != null){
					var showArr = JSON.parse(showValue);
					var trHtml = '';
					for(let i = 0; i < showArr.length; i++)
					{
						trHtml += "<div class='shopDetails center'>" 
									+ "<span>" + showArr[i].title + "</span>" 
									+ "<span>价格:¥" + showArr[i].price + "</span>"
									+ "<span>" + showArr[i].type + "</span>"
									+ "<span class='num'>" + showArr[i].num + "</span>"
								  +"</div>";
					}
					$(".aa").html(trHtml);
				}	
			})
		})
	</script>
</body>
</html> 

4、sessionStorage

关闭页面数据自动清空,使用同localStorage一样

localStorage需要清除浏览器数据

5、cookies

设置过期时间:把时间调至当前时间的前一天

长度限制

js代码量太大,不建议使用cookies

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值