2012-07-11 70 views
0

这只是一个好奇心的问题。但即时通讯想知道如果我可以在String.prototype前添加一个额外的变量。我可以添加一个额外的变量String.prototype

例如:

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

当然我relize这并不工作。但是,我可以让它工作吗?我想语法,如:

$("Hi").functionName();

的,jQuery的语法,只需用的(),而不是一个选择的内部字符串。

我想需要$

由于:

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

的作品,但它使得它如此不需要$,所以 “喜” .functionName()的作品。

感谢您的建议。

+0

如果你想保持与jQuery的良好关系,不要这样做。 – xdazz 2012-07-11 02:00:40

+0

不,我不希望它与jQuery保持良好的关系。只是想知道如何做到这一点。 – Shawn31313 2012-07-11 02:03:05

+0

'“hi”.functionName()'就好。 '$'不是必需的。 – xdazz 2012-07-11 02:05:21

回答

0

我真的不知道什么是“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 
+0

有没有办法把所有的功能放在var中?例如:'var hi = {reverse:function(){}}''''这就是我当前的代码的工作方式。我试着做,但没有任何工作 – Shawn31313 2012-07-11 02:47:23

+0

@ Shawn31313:我不确定你的意思。 – 2012-07-11 12:27:47

+0

没有什么我得到它的工作。 – Shawn31313 2012-07-13 03:14:58

0

不,这是有点困惑。如果你有这样的事情

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

你就必须解决这个问题是这样的:

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

(一些括号是可选的。)

如果你希望能够像做这个:

$("Hi").functionName(); 

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

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

(请注意,jQuery的魔术fn参数只是一个别名,它的构造函数的prototype属性。)

什么是你在这里根本目标是什么?

相关问题