物件導向題解

2021-10-02 22:16:18 字數 2447 閱讀 3817

先看以下示例:

function

test()

return subtest;

}// 呼叫1

console.

log(

test()

());

//1console.

log(

test()

());

//1// 呼叫2

var fn =

test()

;console.

log(fn(

));//1

console.

log(fn(

));//2

從示例中我們不難看出,呼叫1和呼叫2都是通過將內部函式subtest作為外部函式test的返回值,從而進行內部函式的呼叫,為什麼最後列印出的結果卻不同呢

根據結果進行初步分析,呼叫1是進行了雙重呼叫,也就是在呼叫了外部函式test之後,緊接著呼叫了內部函式subtest,每次subtest的a++都是建立在外部函式test的定義的a的數值上的

所以每次執行時,a是test函式的區域性變數,每次的值都會重新賦值為1

呼叫2首先呼叫test函式,將返回值subtest函式賦值給變數fn,之後直接呼叫fn,也就是直接呼叫了subtest內部函式

所以每次執行時,a相對於subtest函式是全域性變數,每次呼叫的值都會儲存

假設將a作為整個函式的全域性變數

var a =1;

function

test()

return subtest;

}// 呼叫1

console.

log(

test()

());

//1console.

log(

test()

());

//2// 呼叫2

var fn =

test()

;console.

log(fn(

));//3

console.

log(fn(

));//4

每次呼叫的值都發生變化,可見先前的分析的結論是正確的

為了實現arr1和arr2兩個陣列的拼接,寫了如下**

var arr1 =[1

,2,3

];var arr2 =[4

,5];

array.prototype.

combo

=function

(arr)

} arr1.combo.

(this

.arr2)

;//間接呼叫失敗

console.

log(arr1)

;//undefined

結果失敗,最後列印出undefined,下面開始嘗試修改,並尋找失敗原因

var arr1 =[1

,2,3

];var arr2 =[4

,5];

array.prototype.

combo

=function

(arr)

}arr1.

combo

(arr2)

;//直接呼叫

console.

log(arr1);[

1,2,

3,4,

5,f]

經過修改,最後勉強將兩個陣列進行了合併,但是最終陣列長度多了1,於是作者特地進行了查詢,最後找到兩種拼接陣列的簡單方法

拼接2個陣列

var arr1 =[1

,2,3

];var arr2 =[4

,5];

array.prototype.push.

(arr1,arr2)

;//返回原陣列

console.

log(arr1)

;//拼接2個

直接給陣列原型呼叫push方法並間接呼叫arr1,arr2兩個陣列,返回陣列arr1

拼接多個陣列

var arr1 =[1

,2,3

];var arr2 =[4

,5];

var arr3 =[6

,7];

var arr = arr1.

concat

(arr2,arr3)

;console.

log(arr)

;//拼接多個

使用concat方法給乙個陣列新增元素

物件導向 初識物件導向

面向過程思想 步驟清晰簡單,第一步做什麼,第二步做什麼.面向過程適合處理一些較為簡單的問題 物件導向思想 物以類聚,分類的思維模式,思考問題首先會解決問題需要分哪些類,然後對這些類進行單獨思考,最後才是對某個分類下的細節進行面向過程的思索 物件導向適合處理複雜的問題,適合處理需要多人協作的問題 對於...

物件導向程式設計01 面向過程 物件導向

前面12講我已經寫完了從零開始學j ase 慶祝完結撒花!那麼從今天開始正式步入物件導向程式設計。建議開啟本章之前先回顧 j ase010方法詳解和 j a變數與方法的呼叫 同類操作中與跨類操作中的對比 物件導向程式設計 oop object oriented programming 物件導向程式設...

物件導向過程與物件導向

物件導向過程與物件導向 1 程式的發展經歷了兩個階段 面向過程 物件導向。2 對於物件導向與面向過程可以用乙個例子解釋,如乙個木匠要做乙個盒子,那麼這個盒子的出發點會有兩種方式 物件導向 先想好要做的盒子,之後在去找相應的工具去做。面向過程 不去想要做什麼樣的盒子,隨需取工具。物件導向三大特徵 封裝...