Есть ли более краткий способ привязать метод к объекту в Javascript?
Я часто использую шаблон
object.methodname.bind(object,...)
привязать метод к собственному объекту, когда мне нужно передать функцию в другую функцию.
Есть ли у Javascript более краткий способ сделать это?
2 ответа
В ES5 вы написали самый краткий способ привязки метода объекта к самому себе.
Существует предложение для ES2016 (né ES7) для нового синтаксиса this-binding
Promise.resolve(123).then(::console.log);
$(".some-link").on("click", ::view.reset);
Одинарная форма ::foo
это сокращение для foo.bind(foo)
в то время как двоичная форма bar::foo
это сокращение для foo.bind(bar)
Хотя ES2016 еще не существует в окончательной форме, вы можете использовать этот синтаксис сегодня через плагин Babel, либо сам по себе, либо как часть предустановленного этапа 0.
Вы должны использовать прототипы:
в некотором смысле это похоже на классы в C++/Java/#c
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());