如何在JavaScript中为字符串添加新方法?

时间:2013-05-04 21:22:20

标签: javascript

也许在我不知道如何搜索它之前已经发布了这个问题。

我想知道如何创建.replace().toString()等方法。我的意思是,如果我有一个变量,我想搜索该变量是否有数字,就像这样做

var someVariable = "hello 34, how are you";

var containsIntsNumber = someVariable.SearchInteger();//being search integer my custom method

if(containsIntsNumber )
{
console.log("It does have integers");
}

我怎样才能做到这一点?

5 个答案:

答案 0 :(得分:1)

您可以修改prototype上的String object

String.prototype.someFunction = function () {
    /* Your function body here; you can use
       this to access the string itself */
};

答案 1 :(得分:1)

您可以将其添加到字符串原型中。

String.prototype.SearchInteger = function(){
  //do stuff
}

你可以这样称呼它

var someVariable = "hello 34, how are you";

var containsIntsNumber = someVariable.SearchInteger();

在JS社区中添加其他功能可能会引起争议。请注意,当您枚举变量的属性时,它会显示出来,理论上它可以被外部库覆盖或用于其他目的。

答案 2 :(得分:1)

这可以通过几种方式实现。有一个返回布尔值的函数或扩展字符串原型,以便您可以直接在字符串变量上调用此方法。

这将检查天使字符串是否有数字。

String.prototype.hasInteger = function(){
    return /\d/.test(this);
}

但是不建议增加原生对象,所以我的建议只是使用一个函数。

function hasInteger(value){
    return /\d/.test(value);  
}

答案 3 :(得分:1)

if(!String.prototype.SearchInteger)
{
    Object.defineProperty(String.prototype, 'SearchInteger',
    {
       value: function()
       {
           // body of your function here
       },
       enumerable: false
    });
}

答案 4 :(得分:0)

在这种情况下,您必须扩展String的prototype。由于String是一个内置类型,不建议扩展他们的原型,但如果你喜欢你仍然可以做(但不要!)

简单的例子就像是

String.prototype.SearchInteger = function () {
     return this.test(/^.*\d+.*$/g);
};

这应该有效,但我没有测试。