1

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

我想知道如何创建像.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");
}

我怎样才能做到这一点?

4

5 回答 5

1

您可以修改String 对象上的原型

String.prototype.someFunction = function () {
    /* Your function body here; you can use
       this to access the string itself */
};
于 2013-05-04T21:25:09.123 回答
1

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

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

你可以这样称呼它

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

var containsIntsNumber = someVariable.SearchInteger();

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

于 2013-05-04T21:25:10.970 回答
1

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

这将检查是否字符串有一个数字。

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

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

function hasInteger(value){
    return /\d/.test(value);  
}
于 2013-05-04T21:25:45.267 回答
1
if(!String.prototype.SearchInteger)
{
    Object.defineProperty(String.prototype, 'SearchInteger',
    {
       value: function()
       {
           // body of your function here
       },
       enumerable: false
    });
}
于 2013-05-04T21:34:45.143 回答
0

在这种情况下,您将不得不扩展prototypeString 。由于 String 是一种内置类型,不建议扩展它们的原型,但如果你愿意,你仍然可以这样做(但不要!)

简单的例子就像

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

这应该工作,虽然我没有测试。

于 2013-05-04T21:28:56.377 回答