JavaSript面向對象

1 函數對象的屬性數組

一個對象的屬性能夠分爲靜態屬性和實例屬性兩種:函數

實例屬性:實例對象上定義的屬性(屬性是定義在實例對象的內存中).this

靜態屬性:函數自己定義的屬性(屬性是定義在函數對象的內存中).對象

示例代碼:遞歸

function Student(){內存

this.age=18;//給實例添加了一個屬性,這個屬性就是實例屬性.io

}console

var s1 = new Student();for循環

s1.name="";//直接給實例添加的屬性,也是實例屬性function

Student.height=;

實例:經過構造函數建立出來的對象

對於函數來講,全部函數其實都是Function構造函數的實例,包括Function函數自己,因此我決定靜態屬性和實例屬性這兩個概念是相對來講的.

2 函數對象定義的默認屬性

示例代碼:

function f(a,s,d,f){

console.log(f.caller);//f函數自己

}

console.log(f.name);//f函數名

console.log(f.length);//4

function f2(){

f();

console.log(f2.caller);//null

 

}

 

f2();

fn.name:函數的名稱

fn.length:函數形參的個數

fn.caller:表示函數是由哪一個函數調用的,若是不是在函數內部調用則輸出null.

arguments:是函數內部默認的局部變量,它是主要用來存儲傳入函數的實參,是一個僞數組.

僞數組:不是Array構造函數建立出來的一個對象,可是它擁有一些屬性,能夠使用for循環進行遍歷

3 函數對象默認參數arguments

示例代碼:

function f1(){

console.log(arguments);

for (var i = 0; i < arguments.length; i++) {

var obj = arguments[i];

console.log(obj);

}

console.log(arguments.length);

console.log(arguments.callee);//函數自己

}

f1(1,2,3,4,5,6)

arguments對象的屬性

arguments.callee:指向的就是當前函數自己

arguments.length:函數調用時傳入的實參個數

arguments是默認的參數能夠直接在函數內部調用,且只能被自己函數調用.

4 遞歸

遞歸的概念:函數的自調用.

遞歸案例:

1. 斐波那契數列:第n項=第(n-2)項+第(n-1)項

示例代碼:

function fib(n){

if(n<=0) return;

if(n===1 || n===2) return 1;

return fib(n-2)+fib(n-1);

}

2. 階乘:n的階乘=(n-1)的階乘*n

示例代碼:

n!=1*2*...*n

function factorial(n){

if(n<0) return;

if(n===0||n===1) return 1;

return factorial(n-1)*n;

}

3. n的m次方

原理:n的m次方=n的m-1次方*n

示例代碼:

function mu(n,m){

var temp=1;

if(m<0)return;

if(m===0)return 1;

for (var i = 0; i < m; i++) {

temp*=n;

}

return temp;

} 

4. 判斷某個DOM元素是否在指定的DOM元素下面

原理:經過查找子元素的父元素和指定DOM元素判斷是否爲同一個

示例代碼:

function find(child,parent){

if(child.parentNode==null) return false;

if(child.parentNode===parent) return true;

return find(child.parentNode,parent);

}

相關文章
相關標籤/搜索