У меня есть эта схема ООП, основанная на THREE.JS, и мне нужно знать, будут ли у меня проблемы с будущей работой с этим.Является ли это хорошим примером apopach для ООП в JS?
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
Да, у вас будут проблемы. У всех разработчиков есть проблемы с их кодом. Что именно мы должны предсказывать, чтобы ответить на ваш вопрос? –
Интересно, есть ли (намного) лучший вариант для структурирования ООП в JS или если это решение работает хорошо. – karacas
Это довольно стандартный шаблон в JavaScript. Единственное отличие состоит в том, что ваши конструкторы расположены в пространстве имен TESTOOP. Существует много дискуссий о разных моделях. Я бы предложил искать их, если вам нужна дополнительная информация. Но для всех «умных» подходов люди придумывают, я лично думаю, что основной образец, который вы показываете, лучше всего. –