いつもありがとうございます。JavaScriptのクラス(クラスもどき)について、より良い方法はないか、お聞きしたいです。いろいろなサイトを参考にして、クラスのひな形を以下のように作りました。一応それらしく動作するのですが、さらに良い方法はないか、もしくは致命的な問題を抱えていないかなど、ご意見ありましたら、教えていただけないでしょうか。JavaScriptのバージョンはES5を想定しています。よろしくお願いします。////////////////////////////////////////////////////////////////////////////////var My_lib = My_lib || {}; // NameSpaceMy_lib.createObject = function(proto) { var func = function() {}; if(proto) { func.prototype = proto; } return new func();};////////////////////////////////////////////////////////////////////////////////// JavaScriptのクラスのサンプル(ひな形)My_lib.SampleClass = (function() { // Constructor var clazz = function SampleClass(name) { if(!(this instanceof clazz)) { // 呼び出し元で、new演算子を付け忘れた場合の処理 // return new My_lib.SampleClass(name); を模擬。コンストラクタの引数の数が変わっても、コピペできるようにしています。 var obj = My_lib.createObject(clazz.prototype); clazz.apply(obj, arguments); return obj; } // Public Field. this.name = name; }; // Pbulic Instance Method. clazz.prototype.getName = function() { return this.name; }; // Public Static Method. clazz.wrap = function (text) { return '<<<' + text + '>>>'; }; return clazz;})();// 使用例var sample = new My_lib.SampleClass('なまえ');console.log('Name:[' + My_lib.SampleClass.wrap(sample.getName()) + ']');// 実行結果>>> Name:[<<<なまえ>>>]
- Child Tree -