作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我经常需要将方法从对象传递到其他对象。但是我通常希望该方法附加到原始对象(附加我的意思是'this'应该指原始对象)。我知道有几种方法可以做到这一点:
a) 在对象构造函数中:ObjectA = function() { var that = this; var method = function(a,b,c) { that.abc = a+b+c }}
b) 在已传递给对象 B 的对象 A 中:objectB.assign(function(a,b,c) { that.method(a,b,c) })
c) 在两个对象之外:objectB.assign(function(a,b,c) { objectA.method(a,b,c) })
我想知道是否有更简单的方法来传递附加到其原始对象的方法。
最佳答案
您可以为所有函数定义一个“createDelegate”方法:
Function.prototype.createDelegate = function(scope) {
var method = this;
return function() {
return method.apply(scope, arguments);
}
}
然后像这样使用:
var myDelegate = myFunction.createDelegate(myScope);
调用“myDelegate”将执行“myFunction”,“this”指向“myScope”,参数与传递给 myDelegate 的参数相同
关于javascript - 如何在 javascript 中传递方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2983926/
我是一名优秀的程序员,十分优秀!