js 双冒号运算符::

22 阅读1分钟

双冒号运算符,可以替代call(),applay(),bind() (1)冒号左边是对象,右边是函数,该运算符会自动将左边的对象,作为上下文环境绑定在右边的函数上面

foo :: bar
//等同于
bar.bind(foo)


foo::bar(...arguments)
//等同于
bar.apply(foo,arguments)


(2)双冒号左边空,右边为一个对象的方法,则等于将该方法绑定在该对象上面

const method = obj::obj.foo
//等价于
const method = ::obj.foo

let log = ::console.log
//等价于
let log = console.log.bind(console)

在dom中

onChange = {::this.swtichChange}
//等价于
onChange={this::this.switchChange}
//等价于
onChange={this.switchChange.bind(this)}