zoukankan      html  css  js  c++  java
  • call,apply和bind的区别

    call,apply继承并调用该函数,bind继承后未调用函数。

    var React = require('react'); //核心
    var ReactDom = require('react-dom'); //描画dom
    var Nav=React.createClass({
      render: function(){
        return <div>Nav</div>
      }
    });
    var Header=React.createClass({
      getInitialState: function(){//组件初始状态
        return {
          // 数据名:值
          str:'bmw',
        }
      },
      show: function(a,ev){
        // alert(a);//参数
        // console.log(this);
        console.log(ev);//代理事件对象
        // ev.target.style.background='red';
    
      },
      render: function(){
        /*var show=function(){
          alert('ok');
        };*/
        return <div>
          <input type="button" value="按钮" onClick={this.show.bind(this,12)}/>  //此处只能用bind,如果用的是call或apply,打开页面后尚未点击时函数show()就已经执行了(被调用)。
        </div>
      }
    });
    
    //组件属性 , 值是string||表达式
    ReactDom.render(
      <Header></Header>,
      document.querySelector('#app')
    );

    另,call和apply的区别在于:call必须明确地传入每一个参数,apply传入参数数组。(详见《高级程序设计》p116)

    即,call ( 在其中运行函数的作用域,每一个参数 ) → call ( this,pra1,pra2,pra3 )

    apply ( 在其中运行函数的作用域,参数数组)  →  call ( this,[pra1,pra2,pra3] )

  • 相关阅读:
    H面试程序(0):字符串一些常用函数的实现
    ctype.h头文件
    poj 3657
    UVA10294项链和手镯(等价类计数问题)
    UVA11375火柴(递推+大数)
    UVA11375火柴(递推+大数)
    UVA11388GCD LCM
    UVA11388GCD LCM
    UVA10943简单递推
    UVA10943简单递推
  • 原文地址:https://www.cnblogs.com/LLLLily/p/7481316.html
Copyright © 2011-2022 走看看