首先想說說javascript中函數的隱含參數
Arguments
該對象代表正在執行的函數和調用它的函數的參數
[function
參數function
說明
Arguments是進行函數調用時
//arguments 對象的用法
function ArgTest(a
var i
var numargs = arguments
var expargs = ArgTest
if (expargs <
s += expargs + " argument
else
s += expargs + " arguments
if (numargs <
s += numargs + " was passed
else
s += numargs + " were passed
s += "\n\n"
for (i =
s += " Arg " + i + " = " + arguments[i] + "\n";
}
return(s); // 返回參數列表
}
在此添加了一個說明arguments不是數組(Array類)的代碼:
Array
alert(new Array()
function testAguments(){
alert(arguments
}
運行代碼你會發現第一個alert顯示
caller
返回一個對函數的引用
functionName
functionName 對象是所執行函數的名稱
說明
對於函數來說
下面的例子說明了 caller 屬性的用法
// caller demo {
function callerDemo() {
if (callerDemo
var a= callerDemo
alert(a);
} else {
alert("this is a top function");
}
}
function handleCaller() {
callerDemo();
}
callee
返回正被執行的 Function 對象
[function
可選項 function 參數是當前正在執行的 Function 對象的名稱
說明
callee 屬性的初始值就是正被執行的 Function 對象
callee 屬性是 arguments 對象的一個成員
函數的遞歸或者保證函數的封裝性
僅當相關函數正在執行時才可用
用於驗證還是比較好的
形參長度
示例
//callee可以打印其本身
function calleeDemo() {
alert(arguments
}
//用於驗證參數
function calleeLengthDemo(arg
if (arguments
window
return;
} else {
alert("實參長度
alert("形參長度
}
}
//遞歸計算
var sum = function(n){
if (n <=
return
else
return n +arguments
}
比較一般的遞歸函數
var sum = function(n){
if (
else return n + sum (n
調用時
其中函數內部包含了對sum自身的引用
一個全局變量
apply and call
它們的作用都是將函數綁定到另外一個對象上去運行
apply(thisArg
call(thisArg[
即所有函數內部的this指針都會被賦值為thisArg
apply的說明
如果 argArray 不是一個有效的數組或者不是 arguments 對象
如果沒有提供 argArray 和 thisArg任何一個參數
並且無法被傳遞任何參數
call的說明
call 方法可將一個函數的對象上下文從初始的上下文改變為由 thisArg指定的新對象
如果沒有提供 thisArg參數
相關技巧
應用call和apply還有一個技巧在裡面
函數(類)就具備了另一個函數(類)的方法或者是屬性
// 繼承的演示
function base() {
this
this
window
}
}
function extend() {
base
window
window
}
上面的例子可以看出
順便提一下
其實現代碼如下
var Class = {
create: function() {
return function() {
this
}
}
}
解析
構造函數
就可以實現prototype中的類創建模式
示例
var vehicle=Class
vehicle
initialize:function(type){
this
}
showSelf:function(){
alert("this vehicle is "+ this
}
}
var moto=new vehicle("Moto");
moto
From:http://tw.wingwit.com/Article/program/Java/JSP/201311/20467.html