apply与call

看这个apply真正应用。bind这是一个绑定时间的函数

var bind=function(object,type,fn){
if(object.attachEvent){//IE浏览器
object.attachEvent("on"+type,(function(){
return function(event){
window.event.cancelBubble=true;//停止时间冒泡
object.attachEvent=[fn.apply(object)];//----这里我要讲的是这里
//在IE里用attachEvent添加一个时间绑定以后。
//this的指向不是到object对象本身所以。我们绑定的function里的this.id是无法正常工作的。
//但是如果我们用fn.apply(object)
//这里可以看出我们是把apply的第一个对象也就是this的指向变更给了object所以this.id就变成了
//object.id 可以正常工作了。

}
})(object),false);
}else if(object.addEventListener){//其他浏览器
object.addEventListener(type,function(event){
event.stopPropagation();//停止时间冒泡
fn.apply(this)
});
}

}
bind(document.getElementById("aaa"),"click",function(){alert(this.id)});

=================================

js中的call和applay的方法的使用http://www.jb51.net/article/44875.htm

===============================================

call方法的使用:

apply与call

需详细的call方法的使用:http://wenku.baidu.com/link?url=U6r4B9bPh5PdzcpylovGS3iWgN9Lj0YK1ICeF-NhwKvw0kxMPBaAgMRm7kcFOc0WJE6-Dy7Ja-a4YuHurDt44Yh47TMoZPakRbNKzLZBTMq

call方法的使用看在类中,function中使用,这样子只有在创建的对象中才能有体现。类中一般都是类调用,传入this. 而对象调用的话,肯定是调用这个对象的方法然后调用call。 js中创建对象和继承是两回事,我们考虑创建对象了,考虑继承后的类的对象,另一回事。

===================

    _sendData: function (url) {
var src = url;
if (typeof arguments[0] == "function") {
src = arguments[0].apply(this, [].slice.call(arguments, 1));
}

  apply与call

  var ss = function (a,b,c){
return 'piao'+a+b+c;
}
function a(data){
var src = data;
if (typeof arguments[0] == "function") {
src = arguments[0].apply(this,[].slice.call(arguments, 1));
//src = arguments[0](arguments.slice(1));
}
alert(src);
}
a(ss,'a','b','c');
box.apply([].slice.call(box,1));

  apply与call

一个简单的call的方法的使用:

'use strict';

var Person = function (){
this.say = function(){
console.log(this.name);
}
} var p = new Person();
p.say.call({name:'aaa'})
上一篇:UVA 10288 - Coupons(概率递推)


下一篇:Android应用打破65K方法数限制