基本上,我使用一个名为Joose for Javascript的元类框架,它允许我使用更优雅的类语法——但我不知道如何从类的更深层次的方法中引用对象的范围宣言。我还使用 require.js 进行依赖管理...
这是一个示例类定义:
define([
'jquery',
'handlebars',
], function($, Handlebars){
var MyClass = Class("MyClass", {
//inheritance
isa: SuperClass,
//instance vars
has: {
hello:{
is: 'r',
init: 'Hi There!',
},
someVarToBeSetUsingAjax:{
is: 'rw',
init: false,
},
},
//methods
methods: {
init: function () {
var self = this;
self.getAjaxVar();
},
getAjaxVar: function() {
var self = this;
//HOW CAN I REFERENCE 'self' THROUGHOUT MY OBJECT?
$.get('ajax/test.html', function(response) {
self.someVarToBeSetUsingAjax = response.value;
});
},
//lots more methods...
}
});
return MyClass;
});
好的,所以我的问题是 - 在 AJAX 函数中,我必须编写 var self = this 才能让我的对象进入 AJAX 调用的范围 - 没问题。但是,我发现自己几乎对我的类声明中的每一个方法都这样做了!如何以干净有效的方式在所有方法中引用 self ?我知道您可以通过设置参数在 AJAX 中使用作用域,假设它不仅仅是 AJAX,而是其他将作用域关闭到外部的函数。
谢谢。