小紅書的價值 第五章 引用型別2 Function

2021-09-25 22:58:38 字數 2662 閱讀 9020

函式實際上是物件

每個函式都是 function 型別的例項,而且都與其他引用型別一樣具有屬性和方法。

由於函式是物件,因此函式名實際上也是乙個指向函式物件的指標,不會與某個函式繫結。

//**********===函式宣告式***************

function

sum(num1, num2)

//**********====函式表示式**********====

varsum

=function

(num1, num2)

;

函式是物件,函式名是指標由於函式名僅僅是指向函式的指標,因此函式名與包含物件指標的其他變數沒有什麼不同

function

sum(num1, num2)

alert

(sum(10

,10))

;//20

var anothersum = sum;

alert

(anothersum(10

,10))

;//20

sum =

null

;alert

(anothersum(10

,10))

;//20

檢視物件引用相關

建立第二個名字相同的函式時,實際上覆蓋了引用第乙個函式的變數

var

addsomenumber

=function

(num)

;addsomenumber

=function

(num)

;var result =

addsomenumber

(100);

//300

函式宣告和函式表示式都有宣告提公升,但是函式宣告提公升是提公升整體(函式名和函式體),而函式表示式只提公升變數;

函式名本身就是變數,所以函式也可以作為值來使用

function

callsomefunction

(somefunction, someargument)

function

add10

(num)

var result1 =

callsomefunction

(add10,10)

;alert

(result1)

;//20

訪問函式的指標而不執行函式的話,必須去掉函式名後面的那對圓括號

函式的返回值可以是物件,函式實際上就是物件,因此可以將函式當做返回物件

this引用的是函式據以執行的環境物件——或者也可以說是 this 值(當在網頁的全域性作用域中呼叫函式時,this 物件引用的就是 window)。

window.color =

"red"

;var o =

;function

saycolor()

saycolor()

;//"red"

o.saycolor = saycolor;

o.saycolor()

;//"blue"

函式的名字僅僅是乙個包含指標的變數而已。因此,即使是在不同的環境中執行,全域性的 saycolor()函式與 o.saycolor()指向的仍然是同乙個函式。上面這個函式 saycolor()是在全域性作用域中定義的,它引用了 this 物件。

由於在呼叫函式之前,this 的值並不確定,因此 this 可能會在**執行過程中引用不同的物件。當在全域性作用域中呼叫saycolor()時,this 引用的是全域性物件 window;

換句話說,對 this.color 求值會轉換成對window.color 求值,於是結果就返回了"red"。

而當把這個函式賦給物件 o 並呼叫 o.saycolor()時,this 引用的是物件 o,因此對 this.color 求值會轉換成對 o.color 求值,結果就返回了"blue"。

window.color =

"red"

;var o =

;function

saycolor()

saycolor.

call

(this);

//red

saycolor.

call

(window)

;//red

saycolor.

call

(o);

//blue

varobjectsaycolor

= x =>saycolor.

bind

(x)();

objectsaycolor

(o);

//blue

js第五章引用型別

5.2.6陣列的操作方法 concat 基於當前陣列中的所有項建立乙個新陣列,返回的是新陣列。該方法會先建立當前陣列的乙個副本,然後將接收到的引數新增在這個副本的末尾,最後返回新構建的陣列。slice 選取陣列部分項。兩引數,分別是要返回項的起始和結束位置。splice 向陣列的中部插入項。spli...

js 第五章總結(引用型別)

引用型別的值 物件 是引用型別的乙個例項,它是一種資料結構,用於將資料和功能組織在一起,也常被稱為類。一 object型別 1.建立方式 1 new 操作符 var person new object person.name lili person.age 18 2 物件字面量 var person...

JS 第五章 幾個引用型別簡述

1.let obj new object 會呼叫建構函式 2.let obj 不會呼叫建構函式 1.let atrr obj attr 2.let attr obj.attr 1 建立方法 1.let arr new array 3 規定了長度為3 如果取 arr 3 長度之外 則值為undefin...