双冒号运算符,可以替代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)}