在javascript中,我如何在另一个原型方法中调用一个原型
In javascript how can I call one prototype method in another prototype method?
假设我有一个函数:
function test(){}
test.prototype.method01=function(){
//do something
}
test.prototype.method02=function(){
//how can I call the method01?
//this.method01()...?
//but the chrome through an error:
//Uncaught TypeError: Object #<HTMLImageElement> has no method 'method01'
}
编辑时间:事实上,方法01是这样的:
test.prototype.method02=function(){
$('.cpy').resizable({
}).draggable({
start:function(e,ui){
this.method01();
}
});
}
test.prototype.method02=function(){
var testThing = this;
$('.cpy').resizable({
}).draggable({
start:function(e,ui){
testThing.method01();
}
});
}
您必须在另一个局部变量中保留this
引用,以便回调函数在调用其他方法时可以使用它。this
引用绑定在每个函数调用上,包括对回调函数的调用,如您在".draggabe()"设置中使用的回调函数。当它被调用时,this
将被设置为与"method02"函数中的this
不同的值。
是的,您可以像本问题中的其他答案一样,在词法范围中手动缓存this
。然而,我建议的另一种选择是使用$.proxy
或function.bind
作为回调创建一个绑定方法。
绑定方法总是使用稳定的this
调用。我发现它们比在更高范围
this
的奇怪命名引用更可读的特点
test.prototype.method02=function(){
this.method01.apply(this);
// do some other stuff
}
相关文章:
- 为什么要包装每一个原型“;类“;JS中具有匿名函数的对象
- 引用“;instanceof“/来自另一个范围的原型
- 如何使用原型继承编写一个整洁灵活的复杂javascript应用程序
- 将原型调用为新对象中的另一个原型
- 有没有任何情况下,一个方法不应该是原型方法
- 从同一原型和上下文中的另一个函数调用函数
- 使用sinon.js创建一个“;“间谍对象”;使用基于真实构造函数/原型的间谍方法
- 从另一个(包括其自身)触发一个原型函数
- 如何在另一个原型事件完成后启动该原型事件
- JavaScript–从另一个原型函数调用原型的一个函数
- 为对象原型提供一个方法,该方法指向对象自身属性的值
- 如何在另一个原型中创建可调用的原型方法
- 如何创建一个原型函数,将另一个原型函数绑定为语法糖(并保持实例的上下文)
- 在原型对象 jquery 上将一个按钮与另一个按钮不同
- JS原型:未捕获的类型错误未定义不是一个函数
- 原型方法不是一个函数,为什么
- Javascript:如何附加到构造函数的原型,如果该构造函数已经在另一个对象的原型上定义
- 为什么允许通过原型继承访问另一个闭包范围内的私有变量
- 访问另一个原型函数的 Javascript 原型
- Javascript - 在原型上放置一个常量