浅拷贝和深拷贝区别: 浅拷贝是拷贝了对象的引用,当原对象发生变化的时候,拷贝对象也跟着变化; 深拷贝是另外申请了一块内存,内容和原对象一样,更改原对象,拷贝对象不会发生变化。 jquery和js的实现。 浅拷贝
var obj1 = {
name: 'james',
age: 17,
address: ['西安', '北京']
}
var obj2 = {}
for (var k in obj1) {
obj2[k] = obj1[k]
}
obj2.address[0] = '长安'
console.log(obj2)
console.log(obj1)
// 或者
Object.assign(obj2, obj1)
console.log(obj2)
深拷贝//方式一
let obj1 = {
name: 'james',
age: 17,
address: ['西安', '北京'],
friends: {
uname: 'pull',
ages: 20
}
}
let obj2 = {}
obj2 = JSON.parse(JSON.stringify(obj1))
obj2.address[0] = '长安'
console.log(obj1)
console.log(obj2)
//方式二
var obj1 = {
name: 'james',
age: 17,
address: ['西安', '北京'],
friends: {
uname: 'pull',
ages: 20
}
}
var obj2 = {}
function deepCopy(obj1, obj2) {
for (var k in obj1) {
var item = obj1[k]
// 数组
if (item instanceof Array) {
obj2[k] = []
deepCopy(item, obj2[k])
// 对象
} else if (item instanceof Object) {
// 基本类型
obj2[k] = {}
deepCopy(item, obj2[k])
} else {
obj2[k] = obj1[k]
}
}
}
deepCopy(obj1, obj2)
obj2.friends.ages = 200
console.log(obj2)
console.log(obj1)ES6箭头函数var fn = function () {
console.log('hello')
}
fn()
// 箭头函数写法
var fn = () => {
console.log('hello')
}
fn()//小括号可以省略 - 只有一个形参的时候
var fn = function (a) {
console.log(a)
}
// 箭头函数写法
var fn = a => {
console.log(a)
}
fn(10)//大括号可以省略 - 代码块只有一行代码/只有返回值
var fn = function (a) {
console.log(a)
}
// 箭头函数写法
//只有一行代码
var fn = a => console.log(a)
fn(10)
// 有返回值,return也可以省略
var fun = () => 'hello'
console.log(fun())
|