我可以向String.prototype添加一个额外的变量吗?

时间:2012-07-11 01:49:09

标签: javascript jquery prototype

这只是好奇心的问题。但我想知道我是否可以在String.prototype前面添加一个额外的变量。

例如:

$.String.prototype.functionName = function(){};

当然我重申这不起作用。但我可以以某种方式使它工作吗?我想要一个语法:

$("Hi").functionName();

jQuery语法,只是在()而不是选择器中使用字符串。

我希望$是必需的。

自:

String.prototype.functionName = function(){};
var $ = String;
$("Hi").functionName();

可以使用,但它不需要$,所以“Hi”.functionName()可以工作。

感谢您的建议。

2 个答案:

答案 0 :(得分:1)

我不确定“jQuery语法”是什么意思,但如果你的意思是使用$变量作为对操作字符串的函数的引用,那就是非常简单...

;(function(window, undefined) {
    var MyStringLib = function(s) { this.string = s; };

    window.$ = function(s) { return new MyStringLib(s); };

    MyStringLib.prototype.addFooBar = function() {
        this.string += "foobar";
        return this;
    };
    MyStringLib.prototype.reverse = function() {
        this.string = this.string.split('').reverse().join('');
        return this;
    };
    MyStringLib.prototype.get = function() {
        return this.string;
    };

})(this);

然后像这样使用库......

var result = $("My name is ").addFooBar().reverse().get();

alert(result); // raboof si eman yM

答案 1 :(得分:0)

不,这有点困惑。如果你有类似的东西

$.String.prototype.functionName = function(){};

你必须像这样解决它:

(new $.String("Hi")).functionName();

(某些括号是可选的。)

如果你想做这样的事情:

$("Hi").functionName();

然后你需要像这样附上它:

$.prototype.functionName = function(){};

(请注意,jQuery的magic fn参数只是其构造函数的prototype属性的别名。)

你的目标是什么?