面试题

面试题
1、 ES6 实现输出两个数组中重复原素

// 求交集 并集  差集
let a=new Set[1,2,3];
let b=new Set[3,4,5];
//交集
let c=new Set([...a,...b]);
//并集
let d=new Set([...a].filter(x=>b.has[x]));
//交集
let d=new Set([...a].filter(x=>b.has[x]));

2、ES6 实现 输入 abbbbbcddffbbb输出abcdfb

function get (num) {
  let data = num.split('')
  let res = new Set(data)
  return [...res].join('')
}
console.log(get("abbbbbcddffbbb"))

3、实现电话号码中间四位星号隐藏

function phoneNumber(num) {
    let res = `${num.slice(0, 3)}****${num.slice(7)}`
    return res
}
console.log(phoneNumber("13343567888"))

4

var length = 10
function fn () {
    console.log(this.length)
}
var obj = {
    length: 5,
    method: function (fn) {
        fn()
        arguments[0]()
    }
}
obj.method(fn, 1)
// 结果 
10
2

5题单词首字母大写

let str = “good good study, day day up”
let reg = /\b([a-zA-Z])[a-zA-Z]*\b/g
// => 函数执行了六次,每一次都把正则匹配信息传递给函数
// => 每一次ARG:["good", "g"]  ["good", "g"]  ...
str = str.replace(reg, (...arg) => {
   let [content, $1] = arg
   $1 = $1.toUpperCase()
   content = content.substring(1)
   return $1+content
}) 

6、DOM事件绑定原理

	 *   1.DOM0级事件绑定
	 *     xxx.onxxx=function(){}
	 *   2.DOM2级事件绑定
	 *     EventTarget.prototype:
	 * 		 addEventListener/removeEventListener/dispatchEvent 
	 * 		 所有的DOM元素对象(含window)都是EventTarget的实例
	 *     非标准浏览器(IE<=8):attachEvent/detachEvent
	 *     xxx.addEventListener/removeEventListener('xxx',function(){},false)
	 * 
	 * 【DOM0事件绑定的原理】
	 *    每一个DOM元素对象都有很多内置的私有属性,其中包含onxxx这样事件类的私有属性
	 *    =>DOM0事件绑定原理就是给这些事件类私有属性赋值(当我们触发相关事件行为,浏览器会帮助我们把赋值的函数触发执行)
	 *    =>特点1:如果不存在某个事件类型的私有属性,则无法基于这种方式做事件绑定(例如 DOMContentLoaded [等到DOM资源加载完触发的事件])
	 *    =>特点2:只能给当前元素的某个事件类型绑定一个方法(私有属性只能赋值一个值)
	 * 
	 * 【DOM2事件绑定的原理】
	 *    利用浏览器的事件池机制来完成事件监听和绑定的
	 *    =>特点1:所有事件类型都可以基于这种方式进行事件绑定( 例如 window.addEventListener('DOMContentLoaded',function(){}) )
	 *    =>特点2:可以给当前元素的某一个事件类型绑定多个不同的方法
	 */
	box.onclick = function () {
		console.log('OK');
	};

	box.addEventListener('click', function () {
			console.log('DOM2=>OK');
	});
	box.addEventListener('click', function () {
		console.log('DOM2=>NO');
	}); 


	// ===========================
	// 问:window.onload和document.ready区别(JQ中的$(document).ready())
	// 我之前看过部分JQ源码,其中包含$(document).ready()的处理
	// =>document.addEventListener("DOMContentLoaded", completed)
	// =>1)它是基于DOM2级事件中事件池监听实现事件绑定的,所以可以在相同页面中给事件绑定好多不同的方法,也就是可以使用多次
	// =>2)它监听的是DOMContentLoaded事件,等待DOM结构一加载完就会触发执行的
	// 而window.onload本身基于DOM0事件绑定,而且监听的是load事件,所以页面中不仅只能用一次,而且需要等到浏览器所有资源都加载完毕才会触发执行,触发的节点要晚于DOMContentLoaded
	// ....
	// 所以我们之前做项目的时候,有的项目没有用JQ,我想在DOM结构加载完再去做一些事情,我就仿照着JQ写过一些公共方法
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值