<body>
<a href='#'>Linked</a>
<script>
var bind = function( fun, thisp ) {
var args = Array.prototype.slice.call(arguments, 2);
return function() {
return fun.apply(thisp, args.concat(Array.prototype.slice.call(arguments)));
}
};
function doubleCheck() {
this.message = 'Are you sure want to leave? ';
}
doubleCheck.prototype.sayGoodBye = function(str) {
return confirm(this.message + ' ' + str);
}
function initPage() {
var clickedLink = new doubleCheck();
var links = document.getElementsByTagName('a');
var $B = bind(clickedLink.sayGoodBye, clickedLink, 'parm1'); // 这里使用了bind
for(var i = 0; i < links.length; i++) {
links[i].onclick = $B;
}
} window.onload = initPage;
</script>
</body>
这里注释处 我用了bind方法绑定了指针. 但bind方法的
return fun.apply(thisp, args.concat(Array.prototype.slice.call(arguments)));
这段代码不太理解 这里的concat(Array.prototype.slice.call(arguments)) 这个参数获取 在什么情况下才能用到啊?
解决方案 »
- 请问如何才能做到javascript节点与节点之间的通信
- 这个正则表达式怎么写?
- 请问使用正则表达式如何出除指定的html标记
- 拖动FrameSet的分割条,调整frame大小时触发的事件是什么?
- 谁帮我匹备一下{$PicUrl}这个字符串
- 请大大帮忙把这段代码左右滚动改成上下滚动
- 高分求助:一个javascript的图片读取的问题
- 为什么我不能使用onChang事件啊
- 自己写的程序,有问题!在线等!急!
- footerFormatter中如果return的值包含'.'就不显示怎么办
- 打印机效果,问题处在哪儿了
- document.all.myid 跟document.forms[0].myid有什么区别
return function() {
return fun.apply(thisp, args);
}
// 我认为这样不就可以了么? 为啥还要获取执行的那个函数的参数 什么时候会有这种情况?
也可以在bind函数执行后返回的函数g 执行的时候传入参数如果只是return fun.apply(thisp, args);
g执行的时候就不能传入参数
var bind = function( fun, thisp ) {
var args = Array.prototype.slice.call(arguments, 2);
return function() {
return fun.apply(thisp, args.concat(Array.prototype.slice.call(arguments)));
//return fun.apply(thisp, args); 拿这个在看看运行结果 }
};
var c= {
a:'a',
b:function(c,b){
return c+b+this.a;
}
}
var d = {a:" xiongdi "};
var g = bind(c.b,d,' ni ')
alert(g(" hao "));
显然一般是这样用 var $$B = Bind(fun, obj, param1, param2);
obj.onclick = $$B;
// 显然不能让$$B去运行 也就是
obj.onclick = $$B('hello'); // 这样就没有绑定的意义了 就直接运行了.问下wtcsy 在你编写代码的时候 使用过 $$B('hello')这样的第二次绑定么?