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