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

上一篇:vue组件创建学习总结


下一篇:C++的性能C#的产能?! - .Net Native 系列向导