new的时候做了什么?
//1,创建了一个空对象
//2,将空对象的原型,指向于构造函数的原型
//3,将空对象作为构造函数的上下文(改变this指向)
//4,对构造函数有返回值的处理判断

//浅拷贝和深拷贝

闭包

原型链:
1,原型可以解决什么问题
对象共享属性和共享方法
2,谁有原型
函数拥有:prototype
对象拥有: __proto__
3,对象查找属性或者方法的顺序
function Fun(){
// this.run = '1'
}
// Fun.prototype.run = '2'
var obj = new Fun()
// obj.run = '3'
// obj.__proto__.run = '4'
Object.prototype.run = '5'
console.log(obj.run);
//打印结果是:3,1,4,2,5
1:先在对象本身查找-->
2:构造函数中查找-->
3:对象的原型查找-->
4:构造函数的原型中找-->
5:当前原型的原型中查找
4,原型链是什么? 就是把原型串联起来
5,原型链的最顶端是null
var const let 三者的区别
var 存在变量提升,而 const 和 let 不存在变量提升
let 不能重复定义,关键字允许值得修改
const 不能重复定义,关键字不允许值得修改
//1,new Set
let arr = [1,1,2,2,3,5,4,3]
// console.log([...new Set(arr)])
function unique(arr){
return [...new Set(arr)]
}
console.log( unique(arr))
//2,indexOf
let arr1 = [1, 1, 2, 2, 3, 5, 4, 3]
function unique(arr){
let brr = []
for(let i=0;i<arr.length;i++){
if(brr.indexOf(arr[i])== -1){
brr.push(arr[i])
}
}
return brr
}
console.log(unique(arr1))
本文探讨了JavaScript中的new操作符的作用,包括创建对象、设置原型和上下文。同时,提到了原型链的概念,用于解决对象共享属性和方法的问题。文章还介绍了var、const和let的区别,以及两种不同的数组去重方法:使用Set和indexOf。
5万+

被折叠的 条评论
为什么被折叠?



