朋友們大家好,好久沒有更新文章了,最近正好有空就想着寫點什么吧,加上這段時間總是能聽到一些朋友們問關於js函數,方法,對象實例到底有什么區別這個問題,所以今天就獻丑來簡單說明一些吧!
其實這些主要都是一些概念上的東西,在這里還是推薦大家多看看諸如《JavaSript權威指南》,《JavaScript高級編程》之類的書籍,當然這些概念如果用代碼寫出來我相信大家也都還是能夠知道的,所以下面我就用文字和代碼舉一些簡單的例子進行說明:
函數:簡單的說函數就是,使用function關鍵字定義(或聲明)的表達式語句;他有兩種寫法,一種是函數定義表達式:
var aa = function(){....};
另一種是函數聲明語句:
function aa(){....};
這兩種寫法在調用時基本一樣,但是這兩種寫法還是有一些區別的:
1.js腳本在運行時會把函數聲明語句提升到所在作用域的最頂端,也就是說你在底下聲明的函數在其聲明之前也可以調用,即可以先調用后聲明,但函數定義表達式則必須先定義后調用;
2.正是函數聲明語句的作用域提升所以最好不要在if/for/while等語句內使用函數聲明語句,因為這些語句沒有塊級作用域;
函數說完了,接下來說說方法:
方法:所謂方法其實就是當對象的屬性是一個函數時,這個函數就是該對象的方法;簡而言之方法就是,作為對象屬性的函數!
//定義一個對象bb var bb = { cc : function(){ ........... } }
看上面這段代碼,函數cc在這里就是對象bb的方法,我們一般叫做bb的cc方法!
看到這里我想大家應該能夠明白函數跟方法的區別了吧:
方法也是函數,但只有作為對象屬性的函數才是方法!
有點繞啊,但是大家應該都能看的明白!
接着我們在來說說實例:
實例是怎么回事了,其實簡單點說,實例就是通過new關鍵字調用的對象!
var obj = new Object; //這里對象obj就是一個對象實例; var arr = new Array; //這里的arr就是一個數組實例;
上面是兩個簡單的例子;下面我們可一個稍微復雜點的:
//創建一個簡單的information var information = function(){ this.name = ''; this.setName = function(name){ this.name = name; } this.getName = function(){ alert(this.name); } } //創建information類的實例 var myName = new information;//這里沒有參數,可以省略小括號 myName.setName('平凡公子');//調用實例的setName方法; myName.getName() //調用實例的getName方法;
上面這個例子可以看出實例,方法,以及實例方法;information是一個對象(函數也是對象),myName是information對象的實例,setName和getName是對象方法,在這里它們也是實例對象myName的方法!
總結:方法是一個作為對象屬性的函數,實例是通過關鍵字new來調用的函數(對象),實例對象是對對象的一個引用,它具有對象的所有方法!
好吧,說到這里本文也就該結束了,可能由於語言水平問題有些地方沒有表達清楚,還請各位看官海涵!如有不明白的地方可以留言!
本文由: 平凡公子原創發布,歡迎閱讀及轉載!