一、函式呼叫模式
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 這種常用的方式,但是不是良好的程式設計習慣,全域性變數,方法...