2.对象属性查询,对象方法,深浅拷贝的理解

数组

定义

  • 构造函数
var arr = new Array();//使用构造函数定义,只有一个参数的时候,表示数组的长度,多个参数表示数组元素
  • 字面量
var arr1 = [];//字面量

遍历数组

  • for
for(var i=0;i<arr.length;i++){
	arr[i]
}
  • forEach,没有终止,没有返回值
arr.forEach((item,index)=>{
	item//是数组的元素
	index//数组下标
	return//。没有用
})
  • map,有返回值,返回新数组,没有改变原数组。可以挑选一些属性进行返回(数组返回的可以是数组元素的部分属性)
 var arr2 = arr.map((item,index)=>{
	item//是数组的元素
	index//数组下标
	return item + 1;
})
  • filter,筛选元素,返回值是数组,返回满足条件的数组(数组元素就是原来的数组元素)
 var arr2 = arr.filter((item,index)=>{
	//item//是数组的元素
	//index//数组下标
	return item > 5//筛选的条件
})
  • reduce(购物车,累加器)
 var arr2 = arr.reduce((total,cur)=>{
	//total//数组当前的和
	//cur//数组当前的元素的值
	return total + cur//筛选的条件
},10)//第二个参数10是初始值
  • every,数组元素都满足条件,返回true,否则返false
 var arr2 = arr.every((item,index)=>{
	//item//是数组的元素
	//index//数组下标
	return item > 5//筛选的条件
})

对象

json键必须加双引号。方法的键不加。普通对象如果键有保留字必须加引号

  1. 构造函数
var obj1 = new Object();
    obj1.name = 'alice';
    obj1['age'] = 20;
  1. 字面量
var obj2 = {}//简单字面量
    obj2.name = 'zs';
var obj3 = {
    name: 'ls'//嵌套字面量,更加直观的看到对象中所有的属性
}
//json键必须加双引号。方法的键不加。普通对象如果键有保留字必须加引号

对象的属性和获取

obj.name和obj[‘name’]有什么区别?

[]取值,必须是变量。
.必须是字符串

删除属性:delete obj.name

检测属性

  1. in运算符,自身属性和继承属性都会返回true
var exist = 'name' in obj;//'name' 是否存在obj
  1. hasOwnProperty,只能检测自身属性。继承属性不能检测(也就是不能检测原型对象的属性。Person.prototype.color = ‘red’;p1.hasOwnProperty(‘color’))//false,因为color是继承过来的
obj.hasOwnProperty('name');

遍历对象

for(var key in obj){
  key;//是键
  obj[key];//是值
}

如果用for in遍历数组,那么key就是下标索引,arr[key]就是值

函数

函数定义

  1. 函数声明
function f() {
 }
  1. 函数表达式
var fn = function () {
}

区别
预解析,提前解析var和function,函数调用位置不同

function比var优先级高

function f1() {
    console.log(1111);
}
var f1;
console.log(f);//Function
var f1 = 222;
console.log(f);//222

构造函数

//构造函数
function Person(name,age) {
    this.name = name;
    this.age = age;
}
//实例化
var tom = new Person('tom','20');

序列化

JSON.stringify();//转成字符串
JSON.parse();//把字符串转对象

深拷贝和浅拷贝

  1. 与基本类型和引用类型有关
    浅拷贝:比如对象的属性改变,那么原始的值也被改变了,影子
    深拷贝:比如对象的属性改变,那么原始的值不被改变了,双胞胎
  2. 数组一级拷贝。二维,数组对象另说
    concat() slice()
  3. 深浅拷贝针对的是多级不是一级
  4. 对象浅拷贝:重写一遍
    var a = {id:1}
    var b = {};
    b.id = a.id;
    b.id = 22;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值