雙冒號運算子提案
,提出了「函式繫結」(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 可變引數。雖然可變引數嚴格說不是擴充套件運算子...