js盲点
-
eval(string):函数可计算某个字符串,并执行其中的的 JavaScript 代码。该方法只接受原始字符串作为参数,如果 string 参数不是原始字符串,那么该方法将不作任何改变地返回。因此请不要为 eval() 函数传递 String 对象来作为参数。
- 注意: call或apply的第一个参数传的是什么,它们就会将其默认为执行上下文对象。倘若我们没有指明call或apply的执行上下文对象,即,call和apply的第一个参数是null、undefined或为空时,
- 在非严格模式下,函数内的this指向window或global,浏览器就是window。
- 严格模式下,null为null,undefined或空为undefined。
- call方法的其它参数依次传递给借用的方法作参数,而apply就两个参数,第二个参数为一个数组传递。
-
简单点,就是:
fun.call(obj, arg1, arg2…) === fun.apply(obj, [arg1, arg2…]) === obj.fun(arg1, arg2…);
- 当参数明确的时候,使用call;当传递的参数不明确时,用 apply咯,即传递arguments给apply作为第二个参数。
3.
<!DOCTYPE html>
<head>
<title>bind</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
</head>
<body>
<script>
var name = 'window';
var obj = {
name:'monkey',
print: function(){
setTimeout(function(){
console.log(this.name);
}.call(this)/*在这里将bind换成call*/,100);
}
};
obj.print();
</script>
</body>
</html>
call或apply是立马呈现’monkey’,而bind是在延迟相应时间后,呈现’monkey’
call或apply是将执行上下文对象换了后,立即执行;而bind是将执行上下文对象换了后,创建一个新函数。
4. 一定要记住bind方法会创建一个新函数,称为绑定函数,当调用这个绑定函数时,绑定函数会以创建它时传入的第一个参数作为this,即执行上下文对象。
5.所有实例对象需要共享的属性和方法,都放在这个prototype对象里面;那些不需要共享的属性和方法,就放在构造函数里面。
如若喜欢,欢迎转载,请在文章页面明显位置给出此文链接!
若您觉得这篇文章还不错请点击下右下角的推荐,有了您的支持才能激发作者更大的写作热情,非常感谢!

浙公网安备 33010602011771号