我一直在实现这个答案所示的类方法
Basic Sproutcore: class method, class variables help
但它不再适用于Sproutcore 2: -
MyFooClass.mixin({
barClassMethod: function() {
/* ... */
}
})
给出错误
MyFooClass.mixin [undefined]不是 功能
我试过阅读Sproutcore源代码并且无法真正识别任何Class方法或变量,这让我感到非常惊讶。
也许我只是做错了?
答案 0 :(得分:2)
扩展sproutcore类时应该记住两件事。
首先,您必须先定义您的课程,然后才能将某些内容混合到其中。首先,使用
创建类/对象MyFooClass = SC.Object.extend({ ... });
或
MyFooClass = SC.Object.create({ ... });
而第一个语句将创建一个类,而第二个语句是类的具体实现(在面向对象的术语中称为对象)。通常,如果您正在使用SC.Object.create(),那么目标是创建一个单例对象,否则使用SC.Object.extend()定义您的类,并使用已定义的类创建您定义的类的对象
myFooObject = MyFooClass.create();
因此,请确保首先定义要在方法中混合的类或对象,并且在您想要使用它时已经在范围内。
其次,如果要将其他方法或属性混合到预先存在的类或对象中,请使用SC.mixin,如下所示
SC.mixin(MyFooClass, {
yourMixedInMethod: function() {
console.log('mixed in method called');
}
});
您也可以使用对象执行此操作,但请注意,只有给定对象获取混合in方法而不是类的所有实例。如果您希望所有实例都获得其他功能,则必须将其混合到类定义中。
答案 1 :(得分:1)
我认为你在寻找
MyFooClass.reopenClass