C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

全過去ログを検索

<< 0 >>
■86878  JavaScriptの模擬クラスについて
□投稿者/ Sasaki -(2018/03/30(Fri) 09:41:31)

    分類:[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:[<<<なまえ>>>]
親記事 /過去ログ149より / 関連記事表示
削除チェック/

■87062  Re[1]: JavaScriptの模擬クラスについて
□投稿者/ Sasaki -(2018/04/10(Tue) 11:32:15)
    No86878 (Sasaki さん) に返信
    > いつもありがとうございます。
    > 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:[<<<なまえ>>>]
    >
記事No.86878 のレス / END /過去ログ149より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -