call,apply和bind的区别

2018-06-24 00:08:50来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折

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] )

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:JavaScript之闭包

下一篇:vue.js定义一个一级的路由 ----由浅入深