私は THREE.JS に基づいたこの OOP スキームを持っています。将来これを使用する際に問題が発生するかどうかを知る必要があります。
var TESTOOP = TESTOOP || { VERSION: '0.1.1' };
//______________________________________________________________________
//OBJECT ROOT CLASS
//______________________________________________________________________
TESTOOP.Object = function(miId){
//VARS________________________________
//PRIVATE
var enable = false;
//PUBLIC
this.miId = miId;
//GETTERS & SETTERS __________________
this.get_enable = function() {
return enable;
};
this.set_enable = function(val) {
enable = val;
};
this.get_miId = function() {
return this.miId;
};
this.set_miId = function(val) {
this.miId = val;
};
};
//METHODS
TESTOOP.Object.prototype = Object.create( TESTOOP.Object.prototype );
TESTOOP.Object.prototype.testNoOverwrite = function (val) {
console.log("Object.testNoOverwrite (val *4): " + val*4);
};
TESTOOP.Object.prototype.testOverwrite = function () {
console.log("Object.testOverwrite ID: " + this.miId);
};
TESTOOP.Object.prototype.testOverwriteArgs = function (val) {
console.log("Object.testOverwriteArgs (val*2): " + val*2);
};
//______________________________________________________________________
//OBJECT CLASS EXTEND & OVERWRITE METHODS
//______________________________________________________________________
TESTOOP.ObjInstance = function (miId) {
TESTOOP.Object.call(this, miId);
};
TESTOOP.ObjInstance.prototype = Object.create(TESTOOP.Object.prototype);
//REWRITE METHODS
TESTOOP.ObjInstance.prototype.testOverwrite = function () {
//SUPER
TESTOOP.Object.prototype.testOverwrite.call(this);
console.log("TESTOOP.ObjInstance.testOverwrite ID:" + this.miId);
};
TESTOOP.ObjInstance.prototype.testOverwriteArgs = function (val) {
//SUPER
TESTOOP.Object.prototype.testOverwriteArgs.call(this,val);
console.log("TESTOOP.ObjInstance.testOverwriteArgs (val*3): " + val*3);
};
//______________________________________________________________________
//INTANCE TEST
//______________________________________________________________________
var ObjInstance = new TESTOOP.ObjInstance(0.1);
ObjInstance.set_enable(true);
ObjInstance.testOverwrite();
ObjInstance.set_miId(0.2);
console.log("TESTOOP.ObjInstance, is enable: " + ObjInstance.get_enable());
ObjInstance.testOverwrite();
ObjInstance.testOverwriteArgs(1);
ObjInstance.testNoOverwrite(1);
JSbin でこれを試すことができます: http://jsbin.com/apoped/1/edit