函式掛載在乙個物件上,作為物件的乙個屬性,稱為物件的方法,
通過這個物件呼叫是,該物件就是此次呼叫的上下文,也就是函式的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...