函式的擴充套件 雙冒號運算子

2021-08-16 11:08:19 字數 928 閱讀 7461

雙冒號運算子提案

,提出了「函式繫結」(function bind)運算子,用來取代call

bind呼叫。

函式繫結運算子是併排的兩個冒號(::),雙冒號左邊是乙個物件,右邊是乙個函式。該運算子會自動將左邊的物件,作為上下文環境(即this物件),繫結到右邊的函式上面。

foo::bar;

// 等同於

bar.bind(foo);

foo::bar(...arguments);

// 等同於

const hasownproperty = object.prototype.hasownproperty;

function hasown(obj, key)

如果雙冒號左邊為空,右邊是乙個物件的方法,則等於將該方法繫結在該物件上面。

var method = obj::obj.foo;

// 等同於

var method = ::obj.foo;

let log = ::console.log;

// 等同於

var log = console.log.bind(console);

如果雙冒號運算子的運算結果,還是乙個物件,就可以採用鏈式寫法。

import  from "iterlib";

getplayers()

::map(x => x.character())

::takewhile(x => x.strength > 100)

::foreach(x => console.log(x));

c 中的冒號( )和雙冒號( )運算子

一 冒號 用法 1 表示機構內位域的定義 即該變數佔幾個bit空間 1 typedef struct 2 建構函式後面的冒號起分割作用,是類給成員變數賦值的方法,初始化列表,更適用於成員變數的常量const型。1 struct 4 5 3 public 和private 後面的冒號,表示後面定義的所...

擴充套件運算子

三個點,主要是用來將陣列幻化為用逗號分隔的引數序列。合併陣列 與解構賦值結合 如果將擴充套件運算子用於陣列賦值,只能放在引數的最後一位,否則會報錯。將字串轉為真正的陣列 可以將類似陣列的物件轉為真正的陣列 map和set結構,generator函式 擴充套件運算子內部呼叫的是資料解構的iterato...

擴充套件運算子

首先點明,es6的新特性之擴充套件運算子 spread 就是三個點 和es6的可變引數形式一樣。擴充套件運算子是很強大的乙個運算子,它能簡化很多在es5中會比較繁雜的操作。對於這個運算子,概念性的東西不多,所以這裡我就簡明扼要的給出一些它的常用場景 1 可變引數。雖然可變引數嚴格說不是擴充套件運算子...