Есть ли более краткий способ привязать метод к объекту в 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());
Другие вопросы по тегам