原型:
所有的构造函数都原型对象(prototype),所有的对象都有原型,原型对象主要作用是共享属性跟方法,像我们熟悉的数组方法,数组方法等,其实这些方法都是在Array的原型对象上.
原型链
当访问一个对象的属性时,会现在这个对象本身属性上查找 如果没有找到就会他的__proto__隐式原型上查找,也就是他构造函数的prototype,如果还没有找到就会再在构造函数的prototype的__proto__中查找,这样一层一层向上查找就会形成一个链式解构,我们称之为原型链
深拷贝
此为手写深拷贝
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
const obj = {
name: '景天',
age: 18,
ship: {
friend: '徐长卿',
wife: '唐雪见',
brother: '茂茂',
sister: '龙葵'
}
}
function clone(obj) {
if (typeof obj === 'object') {
if (obj instanceof Array) {
let result = []
for (let i = 0; i < obj.length; i++) {
result[i] = clone(obj[i])
}
return result
} else {
let result = {}
for (let k in obj) {
result[k] = clone(obj[k])
}
return result
}
} else {
return obj
}
}
const obj2 = clone(obj)
obj.name = '飞蓬将军'
obj.ship.brother = '何必平'
console.log(obj, obj2);
</script>
</body>
</html>
运行结果如下: