2015-12-24 2 views
1

Я часто ловлю себя с помощью шаблонаСуществует ли способ привязки метода к объекту в Javascript?

object.methodname.bind(object,...) 

привязать метод к его владеющей объектом для того, когда мне нужно передать функцию в другую функцию.

Есть ли у Javascript способ для этого?

+1

Вы можете написать свою собственную вспомогательную функцию 'bind (object," methodname ")' – Bergi

ответ

2

В ES5 то, что вы написали, является наиболее кратким способом привязки метода объекта к себе.

Существует предложение для ES2016 (né ES7) для нового this-binding syntax

Promise.resolve(123).then(::console.log); 

$(".some-link").on("click", ::view.reset); 

Унарный форма ::foo представляет собой сокращенную foo.bind(foo), в то время как бинарная форма bar::foo представляет собой сокращенную foo.bind(bar)

Хотя ES2016 делает еще не существует в окончательной форме, вы можете использовать этот синтаксис сегодня через Babel plugin, либо самостоятельно, либо как часть preset stage 0.

0

Вы должны использовать прототипы:

в некотором смысле он похож на классы в C++/Java/# с

function Person(name, phone){ //constructor 
    this.name = name; 
    this.phone = phone; 
} 
Person.prototype.someMethod = function(){ 
    return this.name + ' ' + this.phone; 
} 

и создания экземпляра Person делается так же, как это:

var john = new Person('John', '123456789'); 
console.log(john.someMethod()); 
+0

Это не касается проблемы вообще. Речь идет о передаче функции в другую функцию и привязка этой функции к ее собственному объекту, когда переданная функция является методом. – Dancrumb

Смежные вопросы