オブジェクトリテラルではなく、コンストラクター関数として「クラス」を定義する必要があります。
var MyClass = function(){
this.init = function () {
this.customer = null;
};
this.test = function(data){
alert('testing');
};
};
var testClass = new MyClass();
testClass.init();
testClass.customer = 'John B';
testClass.test(); //alerts 'testing'
次に、init
関数は実際には必要ありません。そのロジックをコンストラクター自体に追加できます。
var MyClass = function(){
this.customer = null;
this.test = function(data){
alert('testing');
};
};
var testClass = new MyClass();
testClass.customer = 'John B';
testClass.test(); //alerts 'testing'
MyClass.prototype
コンストラクター内でメソッドを宣言する代わりに、メソッドを追加することもできます。この 2 つの違いについては、JavaScript で「プロトタイプ」と「これ」を使用しますか? を参照してください。.
最後に、オブジェクト リテラルに固執する場合は、次を使用する必要がありますObject.create
。
var myclass = {
init:function () {
this.customer = null;
},
test : function(data){
alert('testing');
}
};
var testClass = Object.create(myclass);
testClass.customer = 'John B';
testClass.test(); //alerts 'testing'