js盲点

  1. eval(string):函数可计算某个字符串,并执行其中的的 JavaScript 代码。该方法只接受原始字符串作为参数,如果 string 参数不是原始字符串,那么该方法将不作任何改变地返回。因此请不要为 eval() 函数传递 String 对象来作为参数。
  2. 注意: 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对象里面;那些不需要共享的属性和方法,就放在构造函数里面。

转载于:https://www.cnblogs.com/cara-front-end/p/6625706.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值