bind在类结构中的作用 顶一下,明天看个人不喜欢用JS写OO,对于这方面的几乎一窍不通,学习一下了要…… 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 哈哈, 一般我不这么用, 喜欢这么用。Function.prototype.bind = function(object) { var method = this return function() { return method.apply(object, arguments); }}function oo(){ this.s = "s1"; var f1 = function(s){ alert(this.s + s); }; f1.bind(this)("s2"); var f2 = function(s){ alert(this.s + s); }.bind(this); f2("s2"); var f3 = function(s){ alert(this.s + s); }.bind(this); f3("s2"); var f4 = function(s1, s2){ alert(this.s + s1 + s2); }.bind(this); f4("s2", "s3");}new oo()总结, 个人觉得我的这种用法更简单, 直观 呵呵,我才学JS一个星期,而且看的是过期版的权威3,Function.prototype.bind = function(object) { var __method = this, args = Array.prototype.slice.call(arguments); args.shift(); return function() { return __method.apply(object, args.concat(Array.prototype.slice.call(arguments))); }}这一段代码没完全搞明白,LZ能帮忙解说下么,谢谢了 你的是简化了的bind如果不需要bind的时候直接插参数可以用那个 function oo(){ this.s = "s1"; var f1 = function(s){ alert(this.s + s); }; f1.bind(this, "s2")(); var f2 = function(s){ alert(this.s + s); }.bind(this, "s2"); f2(); var f3 = function(s){ alert(this.s + s); }.bind(this); f3("s2"); var f4 = function(s1, s2){ alert(this.s + s1 + s2); }.bind(this, "s2"); f4("s3");}new oo();貌似木有必要這樣封裝一下吧? 还是有用的例如function oo(){ this.a = "aa"; this.t = setTimeout(function(){ alert(this.a) }.bind(this), 500);};new oo(); 楼主也是参考了prototype的bind方法吧 是啊以前很少用毕竟会修改function不过近来发现原来是很有用的 这个确实有用哦, 一般用于callback, 避免了callbackObject, callbackFunction的形式, 只要一个bind就搞定, 强。另外一个用处是作为事件的处理函数,Function.prototype.bindAsEventLisener = function(object){ var method = this; return function(event) { method.call(object, event || window.event); }} js咋不管用 jquery dialog 按钮文本可以是变量吗 自已写js 库 如何写自动提示? 关于局部变量与形参同名的问题 flash没有声音 匿名函数内调用setTimeout的问题 JS写的表单点击submit后没有反应 希望有朋友和我一起讨论这个firefox的DOM节点兼容问题谢谢了! 如何让文本框失效? 紧急求救!如何用实现隐藏当前窗口的菜单、地址栏和按钮栏?(在线等待!) 请问各位这样的结构好不好 parent.onload没反映
Function.prototype.bind = function(object) {
var method = this
return function() {
return method.apply(object, arguments);
}
}function oo(){
this.s = "s1";
var f1 = function(s){ alert(this.s + s); };
f1.bind(this)("s2");
var f2 = function(s){ alert(this.s + s); }.bind(this);
f2("s2");
var f3 = function(s){ alert(this.s + s); }.bind(this);
f3("s2");
var f4 = function(s1, s2){ alert(this.s + s1 + s2); }.bind(this);
f4("s2", "s3");
}new oo()总结, 个人觉得我的这种用法更简单, 直观
Function.prototype.bind = function(object) {
var __method = this, args = Array.prototype.slice.call(arguments); args.shift();
return function() {
return __method.apply(object, args.concat(Array.prototype.slice.call(arguments)));
}
}
这一段代码没完全搞明白,LZ能帮忙解说下么,谢谢了
你的是简化了的bind
如果不需要bind的时候直接插参数可以用那个
function oo(){
this.s = "s1";
var f1 = function(s){ alert(this.s + s); };
f1.bind(this, "s2")();
var f2 = function(s){ alert(this.s + s); }.bind(this, "s2");
f2();
var f3 = function(s){ alert(this.s + s); }.bind(this);
f3("s2");
var f4 = function(s1, s2){ alert(this.s + s1 + s2); }.bind(this, "s2");
f4("s3");
}new oo();
貌似木有必要這樣封裝一下吧?
例如
function oo(){
this.a = "aa";
this.t = setTimeout(function(){ alert(this.a) }.bind(this), 500);
};new oo();
是啊
以前很少用毕竟会修改function
不过近来发现原来是很有用的
这个确实有用哦, 一般用于callback, 避免了callbackObject, callbackFunction的形式, 只要一个bind就搞定, 强。另外一个用处是作为事件的处理函数,
Function.prototype.bindAsEventLisener = function(object)
{
var method = this;
return function(event) {
method.call(object, event || window.event);
}
}