为字符串创建方法而不创建原型

时间:2015-05-20 04:35:45

标签: javascript methods

我想创建一个方法,你可以调用'string'.doSth()而不创建新的字符串原型。我该怎么办?

4 个答案:

答案 0 :(得分:1)

我注意到你不想要String.prototype

通过执行以下操作避免使用它:

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!

我会留下其余部分以防你改变主意

thisString.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'