JavaScript函式呼叫得四種方式及函式傳參

2021-07-15 21:52:33 字數 2484 閱讀 7517

一、函式呼叫模式

function

add1

(i) add1(1);

二、方法呼叫模式

var mynumber = 

}mynumber.add(1);

三、構造函式呼叫模式

(建構函式:首字母大寫)

// 定義乙個建構函式

var person = function

() ;

};// 呼叫構造器,建立物件

var p = new person();

// 使用物件

p.sayhello();

function

point

(x,y)

point.prototype.move=function //在point建構函式的原型物件上建立乙個move方法

var p=new point(0,0)//例項化的p函式可以訪問move方法

var circle=

四種呼叫模式的區別

js引擎會在呼叫函式時會在本地作用域上自動生成兩個變數,this和arguments。呼叫方法的不同就體現呢在this指向的不同。

函式呼叫模式:

this 指向全域性作用域

function

add(i,j))()

}add();

兩次執行結果,this都是window全域性作用域

window

window

方法呼叫模式:

this:執行方法的呼叫者

var mynumber = 

}mynumber.add(1);//object

深入理解this,思考下面的問題:

1.以下**中列印的this是個什麼物件?

2.這段**能否實現使mynumber.value加1的功能?

3.在不放棄helper函式的前提下,有哪些修改方法可以實現正確的功能?

var mynumber = 

helper(i);

} }mynumber.add(1);

函式呼叫生成的另乙個引數: arguments

類似陣列的物件array-like

-arguments[index]

-arguments.length

函式傳參:

原始型別:按值傳遞

物件型別:按共享傳遞

引數傳遞的幾種型別:

1、按值傳遞call by value

外部變數傳遞給函式時,函式形參獲取的是外部變數的副本,當在函式內修改外部變數時,外部變數不會發生變化。

var count = 1;

var addone = function

(num)

var ret = addone(count);

console.log(ret);//2

console.log(count);//1

2、按引用傳遞 call by reference

外部變數傳遞給函式時,函式形參是外部變數的乙個引用,在函式內部對函式的任何修改,會反饋到外部變數。

var count = ;

var addone = function

(obj)

var ret = addone(count);

console.log(ret);//object

console.log(count);//object

(實際是按共享傳遞的。在函式內部,函式改變了堆記憶體中的值,即改變了count和obj的指向的值)

3、按共享傳遞 call by sharing

外部變數傳遞給函式時,形參obj獲取的是count位址的乙個副本。(count是物件型別資料,count指標(位置)存放在棧記憶體中,資料存放在堆記憶體蟲。)此時obj和count指向的是同乙個物件(),這個物件值得變化會同時反應在obj和count上。

在函式內部,把obj指向了另乙個物件(),不影響count指向的物件。

JavaScript函式封裝呼叫

舉個列子 我們在寫前端頁面,經常會使用到jquery文字框內容,來判斷一下輸入值是否符合,常見的寫法 這個頁面寫了個方法,結果發現另外乙個頁面還要寫同樣的,於是,就會寫到js中 引入,呼叫 function test 頁面呼叫 test 這也是一種封裝,還有一種封裝方法是 test function...

javascript呼叫匿名函式的多種方式

目前,以下多種方式中,只能理解第一種和第二種,其他都不明白是什麼個原理,功力尚淺,還需努力,各位大神能不能解釋下?方式1,呼叫函式,得到返回值。強制運算子使函式呼叫執行 function x,y 3,4 方式2,呼叫函式,得到返回值。強制函式直接量執行再返回乙個引用,引用再去呼叫執行 functio...

javascript函式呼叫的4種方式

this關鍵字,指代函式執行時的當前物件 1,作為乙個函式呼叫 function myfunction a,b myfunction 3,4 12 當前的this,是全域性的,屬於window物件,window.myfunction 12 這種常用的方式,但是不是良好的程式設計習慣,全域性變數,方法...