Class enchant.Class.MixingRecipe
混ぜる先にどういう風に混ぜる処理を行うか設定する. このために、MixingRecipeはプロパティが三つある:
- decorateMethods(先の関数をラップする関数、デコレータ・パターンを参照してください)
- overrideMethods (先の関数をオーバーライドする関数)
- overrideProperties (先のプロパティをオーバーライドするプロパティ)
enchant.Class.mixClasses、 enchant.Class.mixClassesFromRecipe や enchant.Class.applyMixingRecipe を参照してください.
- Defined in: mixing.enchant.js
- Extends Object
Constructor Attributes | Constructor Name and Description |
---|---|
enchant.Class.MixingRecipe(decorateMethods, overrideMethods, properties)
混ぜる中、どういう風に関数やプロパティが追加されるか設定する新たなMixingRecipeを生成する.
|
Field Attributes | Field Name and Description |
---|---|
先の関数をラップする関数、デコレータ・パターンを参照してください.
|
|
先の関数をオーバーライドする関数.
|
|
先のプロパティをオーバーライドするプロパティ.
|
Method Summary
Method Attributes | Method Name and Description |
---|---|
<static> |
enchant.Class.MixingRecipe.createFromClass(sourceClass, boolean, Array
引数のクルスの関数やプロパティから、MixingRecipeを生成する.
|
Class Detail
enchant.Class.MixingRecipe(decorateMethods, overrideMethods, properties)
混ぜる中、どういう風に関数やプロパティが追加されるか設定する新たなMixingRecipeを生成する.
クラスからMixingRecipeを生成することには enchant.Class.MixingRecipe.createFromClass を参照してください.
var recipe = new enchant.Class.MixingRecipe({ add : function(value) { this._myValue += 3*value; this._mixing.add.apply(this,arguments); }, mult : function(value) { this._myValue *= value*7; this._mixing.mult.apply(this,arguments); } },{ sub : function(value) { this._myValue -= 5*value; } },{ myProperty : { get: function() { return 3*this._myPropertyValue; }, set : function(val) { this._myPropertyValue = val; } }}); var NewClass = enchant.Class.applyMixingRecipe(Class1,recipe);
- Parameters:
- {Object} decorateMethods
- 先の関数をラップする関数、デコレータ・パターンを参照してください. 混ぜる結果のクラスでラップされた関数をアクセスするように_mixingというプロパティがある、例:this._mixing.myFunction.apply(this,arguments).
(キーと値のペア持っているオブジェクト、キーは関数名、値は関数). - {Object} overrideMethods
- 先の関数をオーバーライドする関数.
(キーと値のペア持っているオブジェクト、キーは関数名、値は関数). - {Object} properties
- 先のプロパティをオーバーライドするプロパティ.
(キーと値のペア持っているオブジェクト、キーは関数名、値はプロパティデスクリプタ).
Field Detail
{Object}
decorateMethods
先の関数をラップする関数、デコレータ・パターンを参照してください. 混ぜる結果のクラスでラップされた関数をアクセスするように_mixingというプロパティがある、例:this._mixing.myFunction.apply(this,arguments).
(キーと値のペア持っているオブジェクト、キーは関数名、値は関数).
(キーと値のペア持っているオブジェクト、キーは関数名、値は関数).
{Object}
overrideMethods
先の関数をオーバーライドする関数.
(キーと値のペア持っているオブジェクト、キーは関数名、値は関数).
(キーと値のペア持っているオブジェクト、キーは関数名、値は関数).
{Object}
overrideProperties
先のプロパティをオーバーライドするプロパティ.
(キーと値のペア持っているオブジェクト、キーは関数名、値はプロパティデスクリプタ).
(キーと値のペア持っているオブジェクト、キーは関数名、値はプロパティデスクリプタ).
Method Detail
-
<static> {enchant.Class.MixingRecipe} enchant.Class.MixingRecipe.createFromClass(sourceClass, boolean, Array
, Array , Array ) 引数のクルスの関数やプロパティから、MixingRecipeを生成する. デフォルト振舞はsourceClassの全ての関数やプロパティ、スーパークラスの関数やプロパティも使用して、 混ぜる先の関数をラップする(decorate).
_mixingプロパティでラップされた関数が自動的に、 sourceClassと混ぜる先の関数を呼び出されるので、関係なくてもいい.対応引数でデフォルト振舞を変更ができる.
var recipe = enchant.Class.MixingRecipe.createFromClass(Class2, true, ['overrideFunction1','overrideFunction2'], ['ignoreFunction1','ignoreFunction2'], ['ignoreProperty1','ignorePropterty2']); recipe.overrideMethods['additionalFunction'] = new function() { console.log('Hello, World'); } recipe.overrideProperties['newProperty'] = { get: function() { return this._newProperty; }, set : function(val) { this._newProperty = val; } } var NewClass = enchant.Class.mixClassesFromRecipe(Class1,Class2,recipe);
- Parameters:
- {Function<constructor enchant.Classで生成された関数>} sourceClass
- このクラスから、MixingRecipeが生成される.
- boolean Optional
- onlyOwnProperties Trueの場合、スーパークラスの関数やプロパティが無視されない.
-
Array
Optional - functionOverrideNameList 混ぜるときオーバーライドされる関数名を持っている配列.
-
Array
Optional - functionIgnoreNameList MixingRecipeを生成するとき無視される関数名を持っている配列.
-
Array
Optional - propertyIgnoreNameList MixingRecipeを生成するとき無視されるプロパティ名を持っている配列.
- Returns:
- {enchant.Class.MixingRecipe} クラス定義から生成されたMixingRecipe.