0

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

例如:

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

当然,我觉得这行不通。但是我可以让它以某种方式工作吗?我想要这样的语法:

$("Hi").functionName();

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

我希望$是必需的。

自从:

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

有效,但它使 $ 不是必需的,因此 "Hi".functionName() 有效。

感谢您的建议。

4

2 回答 2

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
于 2012-07-11T02:05:10.673 回答
0

不,这有点混乱。如果你有这样的事情

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

你必须像这样解决它:

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

(一些括号是可选的。)

如果您希望能够执行以下操作:

$("Hi").functionName();

那么你需要像这样附加它:

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

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

您在这里的基本目标是什么?

于 2012-07-11T02:06:52.493 回答