恒星计划-前端试题

2019-06-28  本文已影响0人  梁相辉

为了提高公司内小伙伴的前端业务水平,每个月都有一个前端的测试,以下是第一期试题以及参考答案

恒星计划第一期-前端考试

1. let const var 区别

var let const
函数级作用域 块级作用域 块级作用域
变量提升 不存在变量提升 不存在变量提升
值可更改 值可更改 值不可更改
- 暂时性锁区特性 如果变量是基本数据类型,不能更改值;如果是复杂数据类型,则不能更改内存地址。

2. js 中 this 的指向

this 的指向,是当我们调用函数的时候指定的,调用方式的不同,决定了 this 指向的不同

调用方式 this 指向
普通函数调用 window
定时器函数 window
立即执行函数 window
对象方法调用 该方法所属的对象
事件绑定方法 绑定事件的对象
构造函数调用 实例对象,原型对象里面的方法也指向实例对象

3. call、apply、bind 的区别

3,js 中继承各自有什么特点

4. new 关键字的作用

5. js中创建对象的方式

6. ES6怎么定义类,以及实现类的继承

7. JS中对象访问规则

8. JS中构造函数和Object的原型链搜索机制

9. 构造函数和普通函数的区别

10. promise 主要解决了什么问题,如何一直 .then 下去

11. ES6 怎么实现数组去重

12. ES6中字符串新增了哪些方法

13. 代码实现数组从小到大排序,至少两种方式

14. 使用 proxy 实现观察者模式

观察者模式是行为模式之一,它的作用是当一个对象的状态发生变化时,能够自动通知其他关联对象,自动刷新对象状态。

const callbacks = new Set();
const observe = fn => callbacks.add(fn)
const observable = obj => new Proxy(obj, {set})

function set(target, key, value, receiver) {
    const result = Reflect.set(target, key, value, receiver);
    callbacks.forEach(observe => observe());
    return result;
}

// 一个可观察的对象
const person = observable({name: 'hui', age: 22})
function change() {
    console.log(`${person.name} is ${person.age}`)
}
observe(change)
pserson.age = 33
上一篇 下一篇

猜你喜欢

热点阅读