如何在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
});
}