Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在JavaScript中向字符串添加新方法?_Javascript - Fatal编程技术网

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

如何在JavaScript中向字符串添加新方法?,javascript,Javascript,也许这个问题在我不知道如何搜索之前就已经发布了 我想知道如何创建像.replace()或.toString()这样的方法。我的意思是,如果我有一个变量,我想搜索这个变量是否有数字,我想这样做 var someVariable = "hello 34, how are you"; var containsIntsNumber = someVariable.SearchInteger();//being search integer my custom method if(containsInt

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

我想知道如何创建像
.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");
}
如何实现这一点?

您可以在上修改

您可以在上修改


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

String.prototype.SearchInteger = function(){
  //do stuff
}
你可以这样称呼它

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

var containsIntsNumber = someVariable.SearchInteger();

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

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

String.prototype.SearchInteger = function(){
  //do stuff
}
你可以这样称呼它

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

var containsIntsNumber = someVariable.SearchInteger();

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

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

这将检查字符串是否有数字

String.prototype.hasInteger = function(){
    return /\d/.test(this);
}
但是,不建议增加本机对象,因此我的建议是只使用函数

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

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

这将检查字符串是否有数字

String.prototype.hasInteger = function(){
    return /\d/.test(this);
}
但是,不建议增加本机对象,因此我的建议是只使用函数

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

在这种情况下,您必须扩展字符串的
原型。由于String是一种内置类型,因此不建议扩展它们的原型,但如果您愿意,仍然可以这样做(但不要!)

简单的例子如下

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

虽然我没有进行测试,但这应该是可行的。

在本例中,您必须扩展字符串的
原型。由于String是一种内置类型,因此不建议扩展它们的原型,但如果您愿意,仍然可以这样做(但不要!)

if(!String.prototype.SearchInteger)
{
    Object.defineProperty(String.prototype, 'SearchInteger',
    {
       value: function()
       {
           // body of your function here
       },
       enumerable: false
    });
}
简单的例子如下

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

虽然我没有进行测试,但这应该是可行的。

但是为什么我不应该使用它呢?增强对象引入了方法与本机方法冲突的可能性,或者被其他代码增强的可能性,以及不良的副作用。您可以这样做,但是您应该对该语言和您试图解决的问题有深入的了解。但是为什么我不应该使用它呢?增强对象引入了方法与本机方法冲突的可能性,或者被其他代码增强的可能性,以及不希望出现的副作用。你可以做到,但你应该对语言和你试图解决的问题有深入的了解。这次讨论比我能解释得更好。请记住,js中没有任何东西可以阻止您这样做,因此如果您想轻松地完成(很多人都这么做),最好只做一些类似于
searchintegerinstalling(String){//与上面相同的代码应该可以工作}
的事情,这篇讨论比我解释得更好。请记住,js中没有任何东西可以阻止您这样做,因此如果您希望您可以轻松地(很多人都这么做)这样做,最好是简单地执行
searchintegerinstalling(String){//与上面的代码相同的代码应该可以工作}
@EinerS可能意味着“足够安全”。@EinerS可能意味着“足够安全”。
if(!String.prototype.SearchInteger)
{
    Object.defineProperty(String.prototype, 'SearchInteger',
    {
       value: function()
       {
           // body of your function here
       },
       enumerable: false
    });
}