js基础题

1.new 一个对象,都发生了什么:

(1) 创建一个空对象,作为将要返回的对象实例。

(2) 将这个空对象的原型,指向构造函数的prototype属性。

(3) 将这个空对象赋值给函数内部的this关键字

(4) 开始执行构造函数内部的代码。

2.构造函数构造对象有几种情况

(1) 如果构造函数内部没有this,那么返回一个空对象

(2) 内部有this,则返回this

(3) 如果return的是一个对象,那么构造生成的对象为return指定的对象,如果返回的是基本数据类型,那么不管return语句,返回this

3.new 的简化流程

4.如何保证对象是new构建的

(1).使用严格模式 use strict ,严格模式中函数内部this不能指向全局对象,默认等于undefined,如果不加new会报错

(2).使用instanceof 判断,如果没有使用,返回实例对象

(3).new.target属性,如果是new命令调用的,new.target指向当前函数否则为undefined

5.this

对象在内存中是以字典结构保存,引擎把对象的内存地址赋值给变量,由于函数可以在不同的运行环境执行,所以需要一种机制,能够在函数体内部获得当前的运行环境,所以this就出现了,它设计目的就是在函数体内部,指代当前的运行环境

6.this使用注意点

this指向不确定,不要在函数中包含多层this(可以定义that代指this)


7.绑定this的方法

call,bind,apply

你可能感兴趣的:(js基础题)