1

私はミニ JavaScript ライブラリを作成しており、人々がカスタム関数を追加できるようにしようとしています。

現在の構文は次のとおりです。

$$.custom('alert', function(){alert(this._string)}); 

アラートをトリガーするには、次を使用します。

$$.string("Hi").alert();

問題は、this._string間の文字列を返すことになっていますが()(通常の関数ではそうです)、代わりに を返していundefinedます。

これは、$$オブジェクトのセットアップに使用するコードです。

var g = function (a) {
        this._string = typeof a == "string" ? a : "undefined"
    },
    NumberPro = function (a) { 
        this._number = typeof a == "number" ? a : "undefined"
    },
    $$ = { 
        string: function (a) {
            return new g(a)
        },
        number: function (a) {
            return new NumberPro(a)
        },
        syntax: { 
            off: function () {
                for (var j in k) {
                    String.prototype[j] = String.prototype[j] || k[j];
                };
                for (var j in l) {
                    Number.prototype[j] = Number.prototype[j] || l[j];
                };
                type = 'prototype';
            },
            on: function () { 
                for (var j in l) {
                    NumberPro.prototype[j] = NumberPro.prototype[j] || l[j]
                }
                for (var j in k) {
                    g.prototype[j] = g.prototype[j] || k[j]
                }
                type = '';
            }
        },
        usePrototype: function (a) { 
            $$.syntax.off();
            a();
            $$.syntax.on();
        },
        custom: function(name, f){
            k[name] = f();
            for (var j in k) {
                    g.prototype[j] = g.prototype[j] || k[j]
                }
                type = '';
        }
    },
    type = '',
    Methods = $$;

「カスタム」の function...ink[name] = f()は、k残りの関数が格納されているオブジェクトです。forループを実行して、それぞれに$$.stringオブジェクトを与えます。

私がやりたいことはthis._string、カスタム アラート関数で送信された関数に追加できるようにすることです。これは可能だと思いますが、これを機能させることができないようです。良い答えが得られるように、十分なコードを提供したいと思います。$$カスタム関数では for を再度実行して、追加された関数にもオブジェクトを与えるので、私のやり方はうまくいくはずですがthis._string、文字列を取得する必要があります。

前もって感謝します。

4

0 に答える 0