【问题标题】:Is there a terser way to bind a method to an object in Javascript?有没有一种更简洁的方法可以将方法绑定到 Javascript 中的对象?
【发布时间】:2016-03-30 23:28:11
【问题描述】:

我发现自己经常使用这种模式

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

当我需要将一个函数传递给另一个函数时,将一个方法绑定到其拥有的对象。

Javascript 有更简洁的方法吗?

【问题讨论】:

  • 你可以编写自己的辅助函数bind(object, "methodname")

标签: javascript functional-programming syntactic-sugar


【解决方案1】:

在 ES5 中,您编写的是将对象的方法绑定到自身的最简洁的方式。

有一个针对 ES2016(né ES7)的提议,新的this-binding syntax

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

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

一元形式::foofoo.bind(foo)的简写,而二元形式bar::foofoo.bind(bar)的简写

虽然 ES2016 尚未以最终形式存在,但您现在可以通过 Babel plugin 单独或作为 preset stage 0 的一部分使用此语法。

【讨论】:

    【解决方案2】:

    你应该使用原型:

    在某些方面它类似于 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());
    

    【讨论】:

    • 这根本没有解决手头的问题。问题是将一个函数传递给另一个函数,并在传递的函数是一个方法时将该函数绑定到其拥有的对象。
    猜你喜欢
    • 1970-01-01
    • 2016-08-13
    • 1970-01-01
    • 1970-01-01
    • 2011-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多