国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

重學前端學習筆記(十九)--JavaScript中的函數

genefy / 1155人閱讀

摘要:方法在中定義的函數。這種聲明方式會定義一個生成器函數,它返回一個對象。類用定義的類,實際上也是函數。調用函數時使用的引用,決定了函數執行時刻的值。表示當為時,取全局對象,對應了普通函數。四操作的內置函數和可以指定函數調用時傳入的值。

筆記說明
重學前端是程劭非(winter)【前手機淘寶前端負責人】在極客時間開的一個專欄,每天10分鐘,重構你的前端知識體系,筆者主要整理學習過程的一些要點筆記以及感悟,完整的可以加入winter的專欄學習【原文有winter的語音】,如有侵權請聯系我,郵箱:kaimo313@foxmail.com。
一、函數 1.1、普通函數
function 關鍵字定義的函數。
function kaimo(){
    // code
}
1.2、箭頭函數
=> 運算符定義的函數。
const kaimo = () => {
    // code
}
1.3、方法
class 中定義的函數。
class KK {
    kaimo(){
        //code
    }
}
1.4、生成器函數
function* 定義的函數。這種聲明方式會定義一個生成器函數 (generator function),它返回一個  Generator  對象。
function* kaimo(){
    // code
}
1.5、類
class 定義的類,實際上也是函數。
class KK {
    constructor(){
        //code
    }
}
1.6、異步函數
普通函數、箭頭函數和生成器函數加上 async 關鍵字。
async function kaimo(){
    // code
}

const kaimo = async () => {
    // code
}

async function kaimo*(){
    // code
}
二、this關鍵字
this 是執行上下文中很重要的一個組成部分。同一個函數調用方式不同,得到的 this 值也不
2.1、普通函數情況下
function showThis(){
    console.log(this);
}

var o = {
    showThis: showThis
}

showThis(); // global
o.showThis(); // o
普通函數的 this 值由調用它所使用的引用決定。獲取函數的表達式,返回的是一個 Reference 類型。Reference 類型由兩部分組成:一個對象和一個屬性值。

上面代碼里 o.showThis 產生的 Reference 類型,即由對象 o 和屬性showThis構成。

調用函數時使用的引用,決定了函數執行時刻的 this 值。

2.2、箭頭函數情況下
const showThis = () => {
    console.log(this);
}

var o = {
    showThis: showThis
}

showThis(); // global
o.showThis(); // global

改為箭頭函數后,不論用什么引用來調用它,都不影響它的 this 值。

2.3、方法情況下
// 這一個沒怎么弄明白,mark一下
class C {
    showThis() {
        console.log(this);
    }
}
var o = new C();
var showThis = o.showThis;

showThis(); // undefined
o.showThis(); // o

首先創建了一個類 C,并且實例化出對象 o,再把 o 的方法賦值給了變量 showThis

三、this 關鍵字的機制

1、在 JavaScript 標準中,為函數規定了用來保存定義時上下文的私有屬性 [[Environment]]

2、當一個函數執行時,會創建一條新的執行環境記錄,記錄的外層詞法環境(outer lexical environment)會被設置成函數的 [[Environment]]

/* 執行上下文的切換機制 */

var a = 1;
foo();

// 在別處定義了 foo:

var b = 2;
function foo(){
    console.log(b); // 2
    console.log(a); // error
}

foo 能夠訪問 b(定義時詞法環境),卻不能訪問 a(執行時的詞法環境)

3、JavaScript 用一個 來管理執行上下文,這個棧中的每一項又包含一個鏈表。

當函數調用時,會入棧一個新的執行上下文,函數調用結束時,執行上下文被出棧。

4、[[thisMode]] 私有屬性。

lexical:表示從上下文中找 this,這對應了箭頭函數。

global:表示當 thisundefined 時,取全局對象,對應了普通函數。

strict:當嚴格模式時使用,this 嚴格按照調用時傳入的值,可能為 null 或者 undefined

"use strict"
function showThis(){
    console.log(this);
}

var o = {
    showThis: showThis
}

showThis(); // undefined
o.showThis(); // o
四、操作 this 的內置函數
Function.prototype.callFunction.prototype.apply 可以指定函數調用時傳入的 this 值。
function foo(a, b, c){
    console.log(this);
    console.log(a, b, c);
}

//call 和 apply 作用一樣,只是傳參方式有區別
foo.call({}, 1, 2, 3); // {} 1 2 3
foo.apply({}, [1, 2, 3]); // {} 1 2 3
Function.prototype.bind 它可以生成一個綁定過的函數,這個函數的 this 值固定了參數
function foo(a, b, c){
    console.log(this);
    console.log(a, b, c);
}
foo.bind({}, 1, 2, 3)(); // {} 1 2 3
個人總結

腦殼都繞暈了_(:3」∠)_,里面還是有很多不懂的,繼續努力。。。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/109609.html

相關文章

  • 重學前端學習筆記十九)--JavaScript中的函數

    摘要:方法在中定義的函數。這種聲明方式會定義一個生成器函數,它返回一個對象。類用定義的類,實際上也是函數。調用函數時使用的引用,決定了函數執行時刻的值。表示當為時,取全局對象,對應了普通函數。四操作的內置函數和可以指定函數調用時傳入的值。 筆記說明 重學前端是程劭非(winter)【前手機淘寶前端負責人】在極客時間開的一個專欄,每天10分鐘,重構你的前端知識體系,筆者主要整理學習過程的一些要...

    lcodecorex 評論0 收藏0
  • 重學前端學習筆記十九)--JavaScript中的函數

    摘要:方法在中定義的函數。這種聲明方式會定義一個生成器函數,它返回一個對象。類用定義的類,實際上也是函數。調用函數時使用的引用,決定了函數執行時刻的值。表示當為時,取全局對象,對應了普通函數。四操作的內置函數和可以指定函數調用時傳入的值。 筆記說明 重學前端是程劭非(winter)【前手機淘寶前端負責人】在極客時間開的一個專欄,每天10分鐘,重構你的前端知識體系,筆者主要整理學習過程的一些要...

    LinkedME2016 評論0 收藏0
  • 重學前端學習筆記(二十九)--JavaScript中要不要加分號?

    摘要:一自動插入分號規則三條規則要有換行符,且下一個符號是不符合語法的,那么就嘗試插入分號。有換行符,且語法中規定此處不能有換行符,那么就自動插入分號。源代碼結束處,不能形成完整的腳本或者模塊結構,那么就自動插入分號。 筆記說明 重學前端是程劭非(winter)【前手機淘寶前端負責人】在極客時間開的一個專欄,每天10分鐘,重構你的前端知識體系,筆者主要整理學習過程的一些要點筆記以及感悟,完整...

    Sourcelink 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<