js權威指南 第八章 函式

2021-08-28 14:16:34 字數 1698 閱讀 4022

函式掛載在乙個物件上,作為物件的乙個屬性,稱為物件的方法,

通過這個物件呼叫是,該物件就是此次呼叫的上下文,也就是函式的this

js函式可以巢狀在其他函式中定義,

這樣就可以訪問他們被定義時所處的作用域的任何變數

構成了乙個閉包

函式呼叫

任何函式只要作為方法呼叫實際上都會傳入乙個隱式的實參

這個實參是乙個物件,就是呼叫方法的母體

方法鏈:當方法的返回值是乙個物件,這個物件還可以再呼叫它的方法

每次的呼叫結果都是另外乙個表示式的組成部分

函式或方法呼叫之前帶有關鍵字new,就構成了構造函式呼叫

構造函式呼叫建立乙個新的空物件,這個物件繼承自建構函式的prototyoe屬性

js的函式沒有指定函式形參的型別,函式的呼叫也沒有進行型別檢查

可選引數

function

test

(/*...*/ a )

當呼叫的函式的時候傳入的實參個數超過了函式定義的形參個數時

在函式體呢,識別符號argument指向實參物件的引用

並通過下標來獲得其它的引數

可選引數的個數不能為0

arguments不是真正的陣列,是乙個實參物件

callee是標準的,指代當前正在執行的函式

可以在匿名函式中遞迴呼叫自身

var

test

=function

(x)

caller是非標準的,指代呼叫當前正在執行的函式的函式

可以訪問呼叫棧

將**放入到乙個函式內,然後呼叫這個函式

這樣全域性變數就變成了函式內的區域性變數

避免與全域性變數的衝突

js中是無法宣告只在乙個**塊內可見的變數的

可以定義乙個函式用作臨時的命名空間

在這個命名空間內定義的變數都不會汙染到全域性命名空間

(

function()

())// 最後乙個括號是立即呼叫該函式

定義乙個匿名函式並立即呼叫

函式的執行依賴於變數作用域

這個作用域是在函式定義時決定的

js函式物件的內部狀態,不僅包含**邏輯,還必須引用當前的作用域鏈

函式物件可以通過作用域鏈相互關聯起來

函式體內部的變數都可以儲存在函式作用域內

這種特性稱為閉包

閉包是活動的

巢狀的函式不會將作用域內的私有成員複製乙份

也不會對所繫結的變數生成靜態快照的

this是js的關鍵字,每個函式呼叫都包含乙個this值,

如果閉包在外部函式裡是無法訪問this 的,除非外部函式將this 轉存為乙個變數

// 呼叫o物件的函式f()

f.call

(o)f.

(o)

function

f( y )

var o =

var g = f.

bind

(o)g(2

)// 3

內建函式往往返回乙個類似 [native code] 的字串作為函式體

高階函式,就是操作函式的函式

接收乙個引數,並返回乙個新的函式

快取memorize 接收乙個函式作為實參,並返回帶有記憶能力的函式

第八章 指標 第八章 指標

1 什麼是位址 include using namespace std int main 11 在堆中建立對像 我們既然可以在堆中儲存變數,那麼也就可以儲存對像,我們可以將對像儲存堆中,然後通過指標來訪問它 include using namespace std class human 14 在建構...

第八章 函式高階

在函式宣告和函式定義前加上inline 乙個簡單的計算平方的 include using namespace std inline double square double x int main 內聯函式的使用 函式經常呼叫,函式體較小,不包含迴圈之類的 引用變數的主要用途是用作函式的形參 引用變數...

機試指南練習 第八章

熟悉stl中常用的string,map等資料結構的使用 對於string物件,可以直接使用 實現深拷貝,同時對於string還有以下幾個需要熟悉的函式 str.size 求字串的大小 str1 str1 a 直接拼接字串 str.insert index,str1 在index的位置插入字串str1...