javascript教程 -常用js函數(1/2)

來源:互聯網
上載者:User

1. 當實際參數的個數與形式參數的個數不匹配時,不會導致錯誤。
如果實際參數值過多了,超出的參數值將被忽略;如果實際的參數值過少,缺失的值將被替換為undefined。

2. 在網頁特效中一共有四種調用模式: 方法調用模式、函數調用模式、構造器調用模式和apply調用模式。這些模式在如何初始化關鍵參數this上存在差異。
a.方法調用模式:
當一個函數被儲存為對象的一個屬性時,我們稱它為一個方法。方法調用模式可以使用this去訪問對象,所以它能夠從對象中取值或修改對象。
b.函數調用模式:
當一個函數並非一個對象的屬性時,它被當作一個函數來調用。當函數以此模式調用時,this被綁定到全域變數,這是語言設計上的一個錯誤。(正確的情況:當內建函式被調用時,this應該仍然被綁定到外部函數的this變數。)解決方案:如果該方法定義一個變數並給他賦值為this,那麼內建函式就可以通過那個變數訪問到this,按照約定,給那個變數命名為 that:

//給 myobject增加一個double方法

myobject.double = function()
{
 var that = this; //解決方案

 var helper = function()
 {
  that.value = add(that.value, that.value);
 }

 helper(); //以函數的形式調用helper。
}

//以方法的形式調用double
myobject.double();

c.構造器調用模式:
在一個函數前面帶上new來調用,那麼將建立一個隱藏串連到該函數的prototype成員的新對象,同時this將會被綁定到那個新對象上

//建立一個名為quo的建構函式。它構造一個帶有status屬性的對象

var quo = function(string)
{
 this.status = string;
}

//給quo的所有執行個體提供一個名為get_status的公用方法
quo.prototype.get_status = function()
{
 return this.status;
}

//構造一個quo執行個體
var myquo = new quo("confused"); //構造器模式調用
document.writeln(myquo.get_status());

構造器函數儲存在以大寫格式命名的變數裡。
d.apply調用模式:
apply方法接受兩個參數,第一個是將被綁定給this的值,第二個就是參數數組。它讓我們構建一個參數數組並用其去調用函數。

//構造一個quo執行個體
var myquo = new quo("confused"); //構造器模式調用
document.writeln(myquo.get_status());

//構建一個包含兩個數位數組,並將他們相加
add = function(a, b)
{
 return a+b;
}

var anarray = [3, 4];
var sum = add.apply(null, anarray);  //7

//構建一個包含status成員的對象
var statusobject = {
 status: "a-ok"
};

//statusobject並沒有繼承自quo.prototype,但我們可以再statusobject上調用
//get_status方法,儘管statusobject並沒有一個名為get_status的方法。
var status = quo.prototype.get_status.apply(statusobject);

3. 參數:
當一個函數被調用時,會有一個預設的參數,就是 arguments “數組”。


//構造一個將很多值相加的函數

//注意該函數內部定義的變數sum不會與函數外部定義的sum產生衝突。
//該函數只能看到內部的那個變數。

var sum = function()
{
 var i, sum=0;
 for(i = 0; i < arguments.length; i+=1)
 {
  sum += arguments[i];
 }
 return sum;
};

document.writeln(sum(4, 8, 15, 16, 23, 42)); //108

註:arguments並不是一個真正的數組。它知識一個“類似數組”的對象。arguments用友一個length屬性,但它缺少所有的數組方法。

4. 返回:
一個函數總是會返回一個值。如果沒有置頂傳回值,則返回undefined。
如果函數以構造器方式被調用,且傳回值不是一個對象,則返回this(該新對象)。

首頁 1 2 末頁

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.