请教一个jquery的问题

2012-03-07 17:56:17 +08:00
 tearsinchina
示意代码:

uploadify = function (id){
this.id = id;
this.isSuccessful = false;
}

uploadify.prototype.initialize = function(){

$("#" + this.Id).uploadify({

...................省略一堆代码....

onUploadSuccess: function (file, data, response) {


alert(this.isSuccessful ); /////出错代码

},
});
}
请教如何能够找到isSuccessful 这个属性使它不出错
3995 次点击
所在节点    问与答
7 条回复
krazy
2012-03-07 18:08:47 +08:00
var self = this;
self.isSuccessful
tearsinchina
2012-03-07 18:15:37 +08:00
@krazy var self = this;
alert(self.isFinishConversion);


这样写还是弹出undefined
tearsinchina
2012-03-07 18:19:42 +08:00
@krazy 搞定了,把self=this 弄在最外面就行了

请问这是什么原理
tearsinchina
2012-03-07 18:24:46 +08:00
@krazy 还有个问题。我定义了个方法,像这样

uploadify.prototype.showWrongMessage =function(file,msg){

}

onUploadError: function (file, errorCode) {
switch (errorCode) {
case SWFUpload.UPLOAD_ERROR.HTTP_ERROR:
self.showWrongMessage(file, 'size or type is wrong');
break;
case SWFUpload.UPLOAD_ERROR.IO_ERROR:
self.showWrongMessage(file, 'size or type is wrong');
break;
}
},

提示 "self.showWrongMessage is not a function",请问是为什么
eric_zyh
2012-03-07 18:35:11 +08:00
1.通过原型(prototype)拓展的方法,对于不同对象会有不同的this。
2.this.isSuccessful = false; 是定义在uploadify,对象的作用域并没有isSuccessful属性

3."self.showWrongMessage is not a function",如果showWrongMessage是用prototype定义的,这个时候就要用 this.showWrongMessage了。
tearsinchina
2012-03-07 18:44:35 +08:00
@eric_zyh

第3点,因为showWrongMessage 是在一个jquery插件里面的方式调用的,所以this 得到的是这个插件的对象,而不是我定义的那个,因此会报找不到方法的错误
tuoxie007
2012-03-07 20:37:55 +08:00
想知道this是什么,看看这个吧, http://tuoxie.me/blog/javascript-this-object-bind/

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/28984

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX