绑定'这个'来自javascript' String'的变量功能到另一个插件功能

时间:2015-05-13 05:48:38

标签: javascript string this bind

我正在尝试绑定此功能

 var addon = function(a){
        if (typeof a == "string"){ 
            return this+a;

        }else{ 
            return this+String(a||"");
        }

    }

String.prototype.addon

所以当我打电话时

"I".addon(" remember.");

返回

"I remember."

到目前为止,这是我对String.prototype.addon所拥有的。

String.prototype.addon = addon.bind();

我无法弄清楚通过绑定传递什么作为此变量,任何人都可以解决这个问题吗?

2 个答案:

答案 0 :(得分:1)

相当简单,您只是调用该功能而不是分配它。

尝试

String.prototype.addon = addon;

然后

"I".addon(" remember.");
> "I remember."

答案 1 :(得分:1)

Bind创建一个新函数,将其设置为传递给bind()的第一个参数。

这是一个示例,演示如何使用bind传递成员方法,具有正确的结果:

var Button = function(content) { 
  this.content = content;
};
Button.prototype.click = function() {
  console.log(this.content + ' clicked');
}

var myButton = new Button('OK');
myButton.click();

var looseClick = myButton.click;
looseClick(); // not bound, 'this' is not myButton

var boundClick = myButton.click.bind(myButton);
boundClick(); // bound, 'this' is myButton

打印出来:

OK clicked
undefined clicked
OK clicked

您还可以在第一个参数之后添加额外的参数,bind将传递这些值到原始函数,然后传递传递给绑定函数的额外参数:

// Example showing binding some parameters
var sum = function(a, b) {
  return a + b;
};

var add5 = sum.bind(null, 5);
console.log(add5(10));

打印出来的内容:15

来源和一些例子:JavaScript Function bind