前端朋友出去问到的面试题 2020-10-9

1、var let const 区别 暂时性死区

	函数提升优先于变量提升,函数提升会把整个函数挪到作用域顶部,变量提升只会把声明挪到作用域顶部

	var 存在提升,我们能在声明之前使用。 let 、 const 因为暂时性死区的原因,不能在声明前使用

	var 在全局作用域下声明变量会导致变量挂载在 window 上,其他两者不会

	let 和 const 作用基本一致,但是后者声明的变量不能再次赋值

2、js 如何实现继承, class、原型继承、组件继承

	1 > 改变原型对象的指向 将子类函数 (B) 的 prototype 指向父类构造函数的 (A) 的一个实例化对象 (a) 那么
	
	      这个子类的构造函数构造出的实例化对象 (b) 就可以访问 (A) 的属性和方法 
	    
	      缺陷 : 由于 B 的 prototype 改变 那么保存在原来 B 中的 prototype 得属性和方法 就无法访问

	      解决方案 : 先进行原型指向的改变 在定义子类的原型属性与方法

	2 > 借用构造函数实现继承 利用 call 方法 或 apply 方法 借用父代的构造函数 在子代构造函数中加入添加父代

	      构造函数.call(this.父代形参列表) 同时在子代形参中加入父代形参列表 相当于在子代构造函数中 也写入了

	      父代构造函数中定义的属性和方法 

	      优点 : 可在子代构造函数实例化对象时自己初始化父代的属性和方法 不再是继承的固定实现

	      缺点 : 无法进行原型链查找 无法访问父代原型中的属性及方法

	3 > 组合继承法 A . 改变 prototype 指向子代与父代之间形成的原型链 可以继承父代原型的属性和方法

		       B . 借用父代的构造函数,实现继承和父代构造函数内的属性与方法 可以实例化子代时自己初始化这些属性与方法

3、事件流 事件捕获,处于目标阶段、事件冒泡、事件委托

	stopPropagtion( ) 阻止事件冒泡

	preventDefualt( ) 阻止默认行为

	事件委托利用的是 事件冒泡的原理 

4、this 指向 - ES6 之前 this, ES6 箭头函数 this

	在 es6 之前

	    1 > 全局打印 this 指向 window 

	    2 > (不开启严格模式) this 指向 windeo 严格模式 this 指向 undefind

	    3 > 定时任务中 this 指向 windeo 

	    4 > 事件绑定 this 指向事件类型 也就是点之前的事件源

	    5 > 对象方法中 this 指向当前对象

	    6 > 构造函数中的 this 指向 new 出来的实例

	es6 之后

	    1 > 箭头函数不绑定 this 关键字 箭头函数中的 this 指向的是函数定义位置的上下文中的 this 箭头函数指向定义位置中的 this

	          指向

	    2 > 箭头函数内部 不能使用 arguments 来获取实参 使用剩余参数写法 获取所有实参

	    3 > 箭头函数不是构造函数 不能实例化

5、如何改变 this 指向&

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值