我一直在实现这个答案中所示的类方法
Basic Sproutcore: class method, class variables help
但它不再适用于 Sproutcore 2:-
MyFooClass.mixin({
barClassMethod: function() {
/* ... */
}
})
给出错误
MyFooClass.mixin [undefined] is not a function
我已尝试通读 Sproutcore 源代码,但无法真正识别任何类方法或变量,这让我感到非常惊讶。
也许我只是做错了?
最佳答案
扩展 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');
}
});
您也可以对对象执行此操作,但请注意,只有给定的对象才能获得混合方法,而不是该类的所有实例。如果您希望所有实例都获得您必须混合到类定义中的附加功能。
关于Sproutcore 2 - 类方法和变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6214236/