选择判断
1、已知对象a,那么以下哪些属于对象浅拷贝?
- A: let b = a
- B: let b = Object.assign({}, a)
- C: let b = {...a}
- D: let b = JSON.parse(JSON.stringify(a))
正确答案:B、C
2、判断一个对象a是数组,下列不正确的做法是?
- A: a.length > 0
- B: typeof a === 'array'
- C: Array.isArray(a)
- D: a instanceof Array
正确答案:A、B、D
3、123 a.js的加载和执行会阻塞后面div的渲染吗?
- A: 不会
- B: 会
正确答案:B
4、function A() {this.name='zz';return null}; let a = new A() 那么alert(a.name)会弹出什么?
- A: null
- B: zz
- C: 执行会出异常
正确答案:B
5、下列哪些css属性是可继承的?
- A: color
- B: padding
- C: height
- D: border
正确答案:A
6、下面关于cookie和storage的理解,正确的是?
- A: 都是存储在客户端
- B: 都可以跟随http请求传输
- C: 都有域名的限制
- D: 都可以通过服务器的header进行下发设置
正确答案:A、C
编程题
1、有个页面,url是:https://flight.qunar.com/pageconfig/list?type=shark_test&name=jim,要求写一个函数,可以满足两个需求:1、传入 type,可以获取到 shark_test 2、不传参数,则获取 {type: "shark_test", name: "jim"}
使用方法:
let typeValue = getParam('type'); let allValues = getParam();
参考答案:
function getParam (...args) { let matches = location.search.match(/([^?=&]+=[^&]+)/g); if (matches) { const querys = {}; matches.forEach(function (tmp) { let kv = tmp.split('='); kv[1] && kv[1] !== 'undefined' && kv[1] !== 'null' && (querys[kv[0]] = decodeURIComponent(kv[1])); }); return args.length ? args.length === 1 ? querys[args[0]] : pick(querys, args) : querys; } }
2、航班列表页面,有筛选组件,和列表组件,点击筛选项之后需要刷新列表组件,要求写一段代码,实现在筛选项点击之后发布一个消息出来,列表组件来订阅这个消息,等到消息收到的时候,来触发自己的刷新。
题目要点:主要是实现消息发布和订阅
使用方法:
const message = new Message(); message.on('receive-data', function(data) { console.log(data); }); setTimeout(function() { message.dispatch('receive-data', {name: 'xxxx'}); }, 200);
参考答案:
class Message { constructor() { this.messages = {}; this.events = {}; } dispatch(key, value) { this.messages[key] = value; let handlerList = this.events[key]; if(!handlerList || handlerList.length === 0) { return; } for(let i=0; i<handlerList.length; i++) { let handler = handlerList[i]; let result = {}; handler(value, key, result); } } on(key, handler, consume) { if(consume) { let value = this.messages[key]; if(value) { handler(value, key); } } let handlerList = this.events[key]; if(!handlerList) { handlerList = [handler]; this.events[key] = handlerList; } else { handlerList.push(handler); } } off(key, handler) { let handlerList = this.events[key]; if(!handlerList || handlerList.length === 0) { return; } let index = handlerList.indexOf(handler); if(index > -1) { handlerList.splice(index, 1); } } }
全部评论
(0) 回帖