(1)作為構(gòu)造器調(diào)用
利用new關(guān)鍵字可以不帶括號地調(diào)用函數(shù):
function Greet() { console.log("hello"); } new Greet; // parentheses are optional in this construct.
new操作符的語法為:
new constructor[([arguments])]
(2)隱性實現(xiàn) toString 或者 valueOf 的調(diào)用
另一個例子就可以隱性調(diào)用toString或者valueOf方法:
var greet = { toString: function() { return "hello"; } } greet + ""; // 字符串連接會強制性轉(zhuǎn)化到String類型,這樣就隱性調(diào)用了toString
可以利用這種方式調(diào)用任意的函數(shù):
function func() { console.log("hello"); } var greet = { toString: func } greet + "";
或者使用 valueOf:
function func() { console.log("hello"); } var greet = { valueOf: func } +greet;
如果要使用valueOf的話,可以在Function的原型中完成復(fù)寫,這樣也能完成一個函數(shù)的傳遞:
Function.prototype.valueOf = function() { this.call(this); // Optional improvement: avoid `NaN` issues when used in expressions. return 0; };
function greet() { console.log("hello"); } +greet;
(3)Iterators
可以利用*操作符創(chuàng)建一個迭代器,然后在下一個元素被遍歷的時候就會被自動調(diào)用了:
function* func() { console.log("hello"); } var greet = {}; greet[Symbol.iterator] = func; [...greet];
一般來說用迭代器的時候都會附帶一個yield語句,但是在這邊希望調(diào)用某個函數(shù)的時候不一定要加上這個語句。上述代碼中是最后一個語句調(diào)用了函數(shù),同時也可以利用解構(gòu)賦值來進行調(diào)用
[,] = greet;
或者使用for ... of結(jié)構(gòu):
for ({} of greet);
(4)Getters
function func() { console.log("hello"); } Object.defineProperty(window, "greet", { get: func }); greet;
?也可以利用Object.assign:
Object.assign(window, { get greet() { console.log("hello"); }}); greet;
全局將 window 對象替換成一個你自定義的全局對象。
(5)Tagged Template Literals
ES6中可以利用模板字符串的方式調(diào)用:
function greet() { console.log("hello"); } greet``;
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/78900.html
摘要:讓我們快速的復(fù)習(xí)一下在中一共有兩種類型的值原始值和對象值原始值有布爾值數(shù)字還有字符串其他的所有值都是對象類型的值包括數(shù)組和函數(shù)類型轉(zhuǎn)化先按運算符來分一下類減號,乘號,肯定是進行數(shù)學(xué)運算,所以操作數(shù)需轉(zhuǎn)化為類型。 前言 很多小伙伴們覺得javaScript很簡單,下面的這行 javaScript代碼可能會讓你懷疑人生。 (!(~+[])+{})[--[~+][+[]]*[~+[]] +...
摘要:理解的函數(shù)基礎(chǔ)要搞好深入淺出原型使用原型模型,雖然這經(jīng)常被當作缺點提及,但是只要善于運用,其實基于原型的繼承模型比傳統(tǒng)的類繼承還要強大。中文指南基本操作指南二繼續(xù)熟悉的幾對方法,包括,,。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請注明出處。 怎樣使用 this 因為本人屬于偽前端,因此文中只看懂了 8 成左右,希望能夠給大家?guī)韼椭?...(據(jù)說是阿里的前端妹子寫的) this 的值到底...
摘要:匿名函數(shù)是不能單獨寫的,所以就提不上立即執(zhí)行了。六立即執(zhí)行函數(shù)在閉包中的應(yīng)用立即執(zhí)行函數(shù)能配合閉包保存狀態(tài)。來看下上節(jié)內(nèi)容中閉包的例子現(xiàn)在,我們來利用立即執(zhí)行函數(shù)來簡化它第一個匿名函數(shù)執(zhí)行完畢后,返回了第二個匿名函數(shù)。 前面的閉包中,提到與閉包相似的立即執(zhí)行函數(shù),感覺兩者還是比較容易弄混吧,嚴格來說(因為犀牛書和高程對閉包的定義不同),立即執(zhí)行函數(shù)并不屬于閉包,它不滿足閉包的三個條件。...
摘要:上一章我們學(xué)習(xí)了遍歷和擴展字符語法。本章我們主要學(xué)習(xí)中的箭頭函數(shù)箭頭函數(shù)更準確來說叫箭頭函數(shù)表達式。箭頭函數(shù)余普通函數(shù)功能相同,但語法差別比較大。 帶你入門 JavaScript ES6 (三) 本文同步帶你入門 JavaScript ES6 (三),轉(zhuǎn)載請注明出處。 上一章我們學(xué)習(xí)了 for of 遍歷和擴展字符語法。本章我們主要學(xué)習(xí) ES6 中的箭頭函數(shù) 箭頭函數(shù) 更準確來說叫 箭...
摘要:表示進行多行匹配。如果正則表達式中含有子表達式,那么該數(shù)組后續(xù)的項依次為匹配到的第一個子表達式的匹配結(jié)果,第二個第個。關(guān)于正則方法有一點必須要提,很容易導(dǎo)致錯誤的情況。這時候直接使用該正則表達式對進行方法調(diào)用,卻返回了。匹配前一項至少次。有人說,一行正則抵得上100行代碼……正則表達式,每門語言都有,在我們的js開發(fā)中,最常見的使用場景:一是表單驗證,像是登錄注冊啊,用戶輸入檢測啊,不管在前...
閱讀 671·2023-04-25 18:59
閱讀 1211·2021-09-22 16:00
閱讀 1889·2021-09-22 15:42
閱讀 3594·2021-09-22 15:27
閱讀 1246·2019-08-30 15:54
閱讀 1104·2019-08-30 11:16
閱讀 2445·2019-08-29 16:24
閱讀 820·2019-08-29 12:14