事件流
- "DOM2级事件"规定的事件流包括三个阶段:事件捕获阶段、处于目标阶段、事件冒泡阶段
当事件处于目标阶段时,事件调用顺序决定于绑定事件的书写顺序
new 一个构造函数,如果函数返回 return {} 、 return null , return 1 , return true 会发生什么情况?
- 如果函数返回一个对象,那么new 这个函数返回这个函数的返回对象,否则返回 new 创建的新对象
function Aa(){
this.name = "xiaofei";
return null`;`
}
let insA = new Aa(); // {name: "xiaofei"}
function Aa(){
this.name = "xiaofei";
return {age: 1};
}
let insA = new Aa(); // {age: 1}
手写 bind、apply、call
Function.prototype.call = function (context, ...args) {
context = context || window;
const fnSymbol = Symbol("fn");
// this代表这个方法,将这个方法复制个context的一个属性后执行,方法里面的this就指向这个content了
context[fnSymbol] = this;
context[fnSymbol](...args);
delete context[fnSymbol];
}
let obj = {age: "xiaofei"};
function b(){
console.log(this.age,111)
}
b(); // undefined,111
b.call(obj); // xiaofei,111
问:事件循环机制 (Event Loop)
数组去重
Array.from(new Set([1, 1, 2, 2]))
如何判断一个对象是空对象
Object.keys(obj).length === 0