js高级

141 阅读3分钟

原型的作用

原型的作用:资源共享 原型:每一个构造函数都有一个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()   //清除所有成员,没有返回值