我想创建一个方法,你可以调用'string'.doSth()而不创建新的字符串原型。我该怎么办?
答案 0 :(得分:1)
通过执行以下操作避免使用它:
window.doSth = function (s) {
return s + '!';
};
或者,您可以创建自己的构造函数:
var SpecialString = function (s) {
this.value = s;
this.doSth = function () {
return this.value + '!';
};
};
现在:
var myString = new SpecialString('Foo');
myString.value; // Its value, Foo
myString.doSth(); // Returns Foo!
this
和String.prototype
您可以使用String.prototype
。这将让你“添加功能”#34;串起来。要获取字符串,请使用this
:
String.prototype.doSth = function () {
alert(this);
};
var testString = 'Foo Bar';
testString.doSth(); // Alerts "Foo Bar"
<小时/>
return
使用return
生成新值。我们假设您希望此功能在字符串末尾添加感叹号 !
:
String.prototype.addExclamation = function () {
return this + '!';
};
现在:
var testString = "Foo";
var newString = testString.addExclamation();
alert(newString); // Alerts Foo!
<小时/>
答案 1 :(得分:1)
只有其他方法是不创建全局函数并将其添加到String
String.doSth = function(str) {
//do something
}
String.doSth('hi');
答案 2 :(得分:0)
你可以总是扩充String的原型。这是
的方式 String.prototype.doSomething = function () {
console.log('doing something');
}
var a = 'str';
a.doSomething();
答案 3 :(得分:0)
通过编写'string'
,您基本上创建了一个新的字符串对象
如果您向字符串原型添加doSth
方法,它将是可调用的:
String.prototype.doSth = function doSth() {
console.log('Inside');
}
"string".doSth(); // will log 'Inside'