Sproutcore 2-Методы и переменные класса
Я реализовал методы класса, как показано в этом ответе
Basic Sproutcore: метод класса, переменные класса help
Но он больше не работает в Sproutcore 2: -
MyFooClass.mixin({
barClassMethod: function() {
/* ... */
}
})
Дает ошибку
MyFooClass.mixin [неопределенный] не является функция
Я пробовал читать через источник Sproutcore и не смог действительно идентифицировать какие-либо методы класса или переменные, что очень удивило меня.
Может быть, я просто делаю это. неправильно?
2 ответа:
При расширении класса sproutcore следует иметь в виду две вещи.
Сначала вы должны определить свой класс, прежде чем вы сможете что-то в него добавить. Поэтому начните с создания класса / объекта либо с
MyFooClass = SC.Object.extend({ ... });
Или
MyFooClass = SC.Object.create({ ... });
Тогда как первое утверждение создает класс, а второе-конкретную реализацию класса (говоря в объектно-ориентированной терминологии-объект). Обычно, если вы используете SC.Объект.create() цель состоит в том, чтобы создать синглтон-объект, в противном случае определение класса с SC.Объект.extend() и использовать определенный класс для создания объектов определенного класса с помощью
Поэтому убедитесь, что ваш класс или объект, который вы хотите смешать с методами, определен первым и уже находится в области действия, когда вы хотите его использовать. Во-вторых, если вы хотите добавить дополнительные методы или свойства в уже существующий класс или объект, используйте SC.смешивание следующим образомmyFooObject = MyFooClass.create();
SC.mixin(MyFooClass, { yourMixedInMethod: function() { console.log('mixed in method called'); } });
Вы можете делать это и с объектами, но помните, что только данный объект получает метод mixed in и не все экземпляры класса. Если вы хотите, чтобы все экземпляры получили дополнительную функциональность, вы должны добавить ее в определение класса.