前端---JavaScript基础2

前端—JavaScript基础2

重构以下代码:(以面向对象的方式)
在这里插入图片描述
重构后:(其中this指针问题也可改成箭头函数)
在这里插入图片描述

在这里插入图片描述

对象类型判断

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

call函数

在这里插入图片描述

对象属性操作

//对象属性操作
//属性增加
var obj = {};
obj.name = "jack";
obj['age'] = 20;
var addr = "wh";
obj[addr] = "武汉";   //使用的变量
console.log(obj);

//属性删除
var obj2 = {};
obj2.name = "aaaaa";
obj2['age'] = 22;
delete obj2.name;
console.log(obj2);

//检测属性
var obj = {
	name:"bbb",
	age:23,
	action:function(){
		this.addr = "beijing"
	}
}
obj.action();
console.log(obj);
//in
console.log('name' in obj)
//hasOwnProperty
console.log(obj.hasOwnProperty('age'))

//属性枚举  遍历
var arr = ['a','b','c','d'];
var obj = {name:"bbb",age:23}
//for in
for(var key in obj){
	//属性名 属性值
	console.log(key,obj[key])
}
for(var v in arr){
	console.log(v,arr[v])
}
//for
for(var i=0;i<arr.length;i++){
	console.log(arr[i])
	//if(条件ok) 终止  return break;
}
//forEach  没有返回值
arr.forEach(function(item,index){
	//不能终止
	console.log(item)
})
//map -- 可修改数组的值  有返回值
var m = arr.map(function(item){ //循环每一个属性 并返回改变后的属性
	return item+1;
})
//filter 过滤器  返回满足条件的数组
var f = arr.filter(item){
	return item === 'c';
})
//every  返回true false  都必须满足条件
var e = arr.every(item){
	return item === 'c';
})
//some  返回true false  满足其中一个即可
var e = arr.every(item){
	return item === 'c';
})
//reduce
var arr = [1,3,5,7];
//总数  当前数
var s = arr.filter(total,currentValue){
	return total+currentValue;
},10) //10初始值



//对象属性拷贝
//对象序列化与反序列化
//JSON --- 浏览器中对象
var obj = {name:"bbb",age:23};
console.log(JSON.stringify(obj));
var str = '{name:"bbb",age:23}';
console.log(JSON.parse(str))

在这里插入图片描述
在这里插入图片描述

深拷贝方法
function deep(dest,ori){  //dest目标对象  ori源对象
	for(var i in ori){
		if(typeof ori[i] === 'object'){
			//递归  判断是数组还是对象
			dist[i] = (ori[i].constructor === Array) ? []:{}; //初始化属性
			deep(dest[i],ori[i]);
		}else{
			dest[i] = ori[i]; //非引用属性
		}
	}
	return dest;
}

var a = deep({},Animal);
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值