1、白屏时间first paint和可交互时间dom ready的关系是?
先触发first paint ,后触发dom ready
2、在setTimeout()定时器中,this指向Window对象;
通过new Star()来调用Star函数,由于使用new绑定,Star函数内部的this指向new创建的实例,而非Window对象;
箭头函数不会与this进行绑定,其this指向取决于该箭头函数同级作用域的this指向,又由于对象不能形成自己的作用域,因此其作用域为全局作用域,this指向Window对象;
立即执行函数的this指向Window对象。
在不手动改变this指向的前提下,this总是指向函数的直接调用对象
如果有new关键字,this指向new出来的那个对象
3、
1)函数(或构造函数)身上才有 prototype (prototype名字叫原型,原型是一个对象);
2)而其他任何通过构造函数实例化出来的对象(不包括null、undefined)身上都有 __proto__(__proto__是隐式原型,隐式原型也一个对象)
3)实例化对象的__proto__ 就是 构造函数的 prototype (===关系)
附:undefind 和 null 既没有prototype也没有 __proto__ ,因为它俩不是函数,也不是函数实例化出来的对象
4、typeof
8、call()方法和apply()方法的作用相同,他们的区别在于接收参数的方式不同。对于call(),第一个参数是this值没有变化,变化的是其余参数都直接传递给函数。(在使用call()方法时,传递给函数的参数必须逐个列举出来。使用apply()时,传递给函数的是参数数组)如下代码做出解释:
function add(c, d){
return this.a + this.b + c + d;
}
var o = {a:1, b:3};
add.call(o, 5, 7); // 1 + 3 + 5 + 7 = 16
add.apply(o, [10, 20]); // 1 + 3 + 10 + 20 = 34
9、
Symbol 本质上是一种唯一标识符,可用作对象的唯一属性名,这样其他人就不会改写或覆盖你设置的属性值。
注意事项
- Symbol值不能与其他类型的值进行运算
- Symbol 值不可以和其他类型值进行混合运算,否则会报错
- Symbol 值如果想要作为属性名,那就不能再用点运算符,因为点运算符后面跟的总是字符串
- 在对象内部使用Symbol 值作为属性名的时候,必须要将值放在方括号中
10、对于正则表达式 /(l)\1/g,其中(l)是第一个分组,\1指向第一个分组,即\1重复了第一个分组的内容,所以该正则表达式可以表示成/(ll)/g
而对于第二个参数$1,表示用第一个分组的内容 l 对匹配到的部分进行替换(即 ll 替换成 l ),同时正则表达式有g表示全局匹配,所以4个ll被替换成2个ll。