|
分類:[JavaScript]
いつもありがとうございます。
JavaScriptのクラス(クラスもどき)について、より良い方法はないか、お聞きしたいです。
いろいろなサイトを参考にして、クラスのひな形を以下のように作りました。
一応それらしく動作するのですが、さらに良い方法はないか、もしくは致命的な問題を抱えていないかなど、
ご意見ありましたら、教えていただけないでしょうか。
JavaScriptのバージョンはES5を想定しています。
よろしくお願いします。
////////////////////////////////////////////////////////////////////////////////
var My_lib = My_lib || {}; // NameSpace
My_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:[<<<なまえ>>>]
|