js 双冒号运算符(::)

双冒号运算符::是 ES7 中提出的函数绑定运算符,用来取代call()、apply()、bind()调用。

双冒号左边是一个对象,右边是一个函数。该运算符会自动将左边的对象,作为上下文环境(即this对象),绑定到右边的函数上面。

javascript 复制代码
foo::bar;
// 等同于
bar.bind(foo);

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

如果双冒号左边为空,右边是一个对象的方法,则等于将该方法绑定在该对象上面。

javascript 复制代码
var method = obj::obj.foo;
// 等同于
var method = ::obj.foo;

let log = ::console.log;
// 等同于
var log = console.log.bind(console);

在react中应用

javascript 复制代码
<div onChange={::this.handleChange}></div>

onChange={::this.handleChange} 等价于 onChange={this::this.handleChange} 即 onChange={this.handleChange.bind(this)}

相关推荐
SuniaWang7 分钟前
《Spring AI + 大模型全栈实战》学习手册系列·专题一:《RAG技术全景解析:从原理到架构设计》
java·javascript·人工智能·spring boot·后端·spring·架构
Irene199111 分钟前
通过JavaScript创建新的img元素并指定onload事件,为什么要在赋值src属性之前指定事件处理程序?
javascript
爱丽_20 分钟前
Vue3 响应式系统:`ref`/`reactive`/`watchEffect` 的工作方式与最佳实践
前端·vue.js
~无忧花开~21 分钟前
React元素渲染:核心概念全解析
开发语言·前端·javascript·react.js
harrain21 分钟前
antv x6graph使用经验
前端·antv·x6
开开心心就好22 分钟前
免费无广告的礼金记账本,安卓应用
java·前端·ubuntu·edge·pdf·负载均衡·语音识别
qq_2837200527 分钟前
nestjs实战(六):诺依Nest.js + MySQL 项目改造为兼容达梦8数据库详细教程
javascript·数据库·mysql·达梦·nest.js·诺依
marsh020633 分钟前
14 openclaw模板引擎使用:高效渲染动态内容
java·前端·spring·ai·编程·技术
Mr数据杨34 分钟前
【通用Vue】学生管理模块通用功能
javascript·vue.js·ecmascript
前端小菜鸟也有人起35 分钟前
vue中is的作用和用法
前端·javascript·vue.js