原型的作用
原型的作用:资源共享 原型:每一个构造函数都有一个prototype属性,指向另一个对象,而这个prototype就是一个对象,这个对象的属性和方法都会被构造函数继承(缺点:浪费内存)
js对象的创建三种方法
- 字面量方式 var obj={}
- 通过new关键字
- 使用构造函数
js的new执行的四个过程
- 在内存中创建一个新的空对象
- 让this指向这个新对象
- 执行构造函数里的代码,给这个新对象添加新的属性和方法
- 返回这个新对象(不需要return关键字)
js的静态成员和实例成员
实例成员:构造函数内部通过this添加的成员,实例成员只能通过实例化的对象来访问
静态成员:在构造函数本身上添加的成员,只能通过构造函数来访问,不能由构造函数创建的实例来访问
对象的原型和构造函数发关系
实例对象有一个属性proto指向构造函数的prototype的原型对象
原型链
每一个实例对象有一个proto属性,指向的构造函数的原型对象,而构造函数的原型对象也是一个对象,也有proto属性,这样一层一层往上找就形成原型链
数组的forEach,some,filter
- forEach一般用于数组的遍历,没有返回值
- some一般用于查询数组中唯一的元素,如果遇到就return true结束遍历,放回值是布尔类型
- filter一般用于数据的筛选,遇到return,但不会终止迭代,返回值是一个新数组
call、apply、bind方法
call和apply可以用于重新定义函数的执行环境(改变this的指向)
bind也可以改变this的指向(使用不需要立即调用,但又想改变函数的this的指向)
this的指向
- 普通函数this指向window
- 对象的方法this指向的是这个对象
- 构造函数的this的指向是构造函数new关键字创建的实例对象
- 绑定事件的函数this指向的是这个函数的调用者
- 定时器函数this指向window
- 立即执行函数this指向的是window
let、const、var关键字作用及区别
let关键字声明的变量具有块级作用域,没有变量提升,可以重新赋值 const 用来声明常量,具备块级作用域,声明并初始化值,一单赋值,不可更改 var 关键字声明的变量,存在变量提升,可以重复声明,可以重新赋值
箭头函数的this关键字
箭头函数不绑定this关键字,如果在箭头函数中使用this,this会指向会由箭头函数的上下文环境决定
set数据结构
set是一种数据结构,set是一个构造函数用来存储数据,set里面存储的值是唯一的
add(value) //添加某个值,返回Set结构本身
delete(value) //删除某个值,返回一个布尔值,表示是否删除
has(value) //返回一个布尔值,表示该值是否为Set的成员
clear() //清除所有成员,没有返回值