1. 程式人生 > >JavaScript函式的幾種寫法

JavaScript函式的幾種寫法

幾種常見寫法

1. 常規寫法:

最常規的寫法

// 函式的定義
function foo(){
    alert('常規寫法');
}

// 函式的呼叫
foo()

2. 匿名函式寫法

給一個變數賦值為一個函式,即變數也為函式物件

// 函式的定義
var foo = function(){
    alert('匿名函式定義');
}

// 函式的呼叫
foo()

3. 將方法作為一個物件

將函式作為物件的方法寫法,採用JSON格式(JSON物件)

// 定義
var test = {
    foo1: function(){  },
    foo2: function
(){
} } // 呼叫 test.foo1(); test.foo2();

4. 建構函式中給物件新增方法

JavaScript中每個物件都有prototype屬性,對物件的prototype屬性的解釋是:返回物件型別原型的引用。

// 給物件新增方法
var foo = function(){ };  // 定義函式物件
foo.prototype.test = function(){ 
    alert('這是在在foo函式上的原始物件上新增test方法,建構函式中用到');
}

// 呼叫
var myfoo = new foo(); // 建立物件
myfoo.test(); // 呼叫物件屬性

5. 自執行函式

JavaScript自執行函式的幾種寫法

// 方式1: (foo())
(
     function(){alert('hello');}()
);
/*這是jslint推薦的寫法,好處是,能提醒閱讀程式碼的人,這段程式碼是一個整體。 
例如,在有語法高亮匹配功能的編輯器裡,游標在第一個左括號後時,最後一個右括號也會高亮,看程式碼的人一眼就可以看到這個整體。 */

// 看到別人的外掛,你會發現人家開頭處加了一個";",這樣就算頁面js有錯誤,載入執行他的外掛也能保證執行,如:
;(function(e){alert(e);}('hello world'));
// 即是型如: ;(foo())
// 方式2:(foo)()
(function(){alert('hello');})();
//這種做法比方法1少了一個程式碼整體性的好處。
// 方式3: function前面加運算子,常見的是!與voidfunction(){alert('hello');}();
void function(){alert(2);}();

注:
如果一個函式的引數很多,那麼我們呼叫函式的時候並不能很好的記住他的順序,把引數封裝成物件,然後把物件裡的一個個屬性對應用於引數,這樣子很好解決了這個問題

 var foo = function(args) {
     sayHi(args.country || "Chinese",
           args.name,
           args.qq,
           args.phone,
           args.email) 
 }

function sayHi(country,name,qq,phone,email){
    alert("Hi, I am a "+country+", my name is "+name+";qq:"+qq+";phone:"+phone+";email:"+email);    
}

foo({name:"xiao",phone:"13888888888",email:"[email protected]",qq:123456});

常見問題

開發中常遇見有函式的寫法不同
myfun:function(){}
myfun = function(){}
function myfun(){}
var myfun =function(){}
myfun.prototype.myfunPro = function (){}

這幾種方法每一個都有不一樣的作用。

  1. 這裡寫程式碼片myfun:function(){} 這個是必須寫在物件內部的,這是一個物件的方法,如
var a = {
   myfun:function(){} 
}

寫在外面會報錯。

  1. 任何時候都不要這樣寫myfun = function(){},這樣寫就變成了全域性物件window的一個屬性,要記得加上var ,第四種方式是對的,如下:
var myfun = function(){}

這是一種宣告函式的方式,左邊是一個變數,右邊是一個函式的表示式,意思就是把一個匿名的函式表示式複製給了變數myfun,只是聲明瞭一個變數指向了一個函式物件。這個和第三種方法function myfun(){}宣告的方法差別不大,但還是有差別的。
這就要涉及到javascript解析的部分了,簡單來說,js在解析的過程中,會先把函式和變數提前解析。
function myfun(){}這種宣告方法會把函式整個語句顯示的提前到了指令碼或者函式前(當前作用域),函式名和函式均會被提前(會在執行上下文程式碼前宣告)。
而var myfun = function(){}這種宣告方法,只是提前了一個變數,並沒有提前函式體。

  1. 最後一種並不是宣告的函式,只是在myfun函式上的原始物件上加了一個myfunPro方法,建構函式中用到的。給你個例子:
var myfun = function(){
   this.a = "a";
}
myfun.prototype.myfunPro = function (){
   alert("0")
}
var test = new myfun();
console.log(test);

執行結果如下圖:

這時候如果你在最底部加上一段程式碼,如下:

ar myfun = function(){
   this.a = "a";
}
myfun.prototype.myfunPro = function (){
   alert("0")
}
var test = new myfun();
console.log(test);
test.myfunPro();

這時候就會彈出一個對話方塊 0了 。

JavaScript例項和物件的區別

在Javascript中只有物件。 變數是物件,函式也是物件。 只要你知道你的物件是什麼,按照它的方式去使用就可以了。

javascript是弱型別,物件,例項,函式,方法通用的。不需要區別那麼清楚。

關於js中例項和物件的解釋如下:

// 比如定義persion如下:
var person = new Object();
var person = {};

JS 是基於原型的面嚮物件語言, 所有資料都可以當作物件處理,所以 person 是物件, 可以把它當作是 Object 的例項. 當然, 一切都是物件。
第二個採用物件字面量的方式生成的person也是如此。
然而它內部沒有呼叫new Object(),而是採用JSON的初始化方式:

將現有的引用指向person。 例項和物件的區別,從定義上來講: 1、例項是類的具象化產品, 2、而物件是一個具有多種屬性的內容結構。
例項都是物件,而物件不全是例項。 Js裡面沒有類(ES6以前)的語法,所以類的概念就通過創造一個物件來實現。

相關推薦

JavaScript函式寫法

幾種常見寫法 1. 常規寫法: 最常規的寫法 // 函式的定義 function foo(){ alert('常規寫法'); } // 函式的呼叫 foo() 2. 匿名函式寫法 給一個變數賦值為一個函式,即變數也為函式物

JavaScript 的物件繼承方式,有寫法

一、物件冒充 其原理如下:建構函式使用 this 關鍵字給所有屬性和方法賦值(即採用類宣告的建構函式方式)。因為建構函式只是一個函式,所以可使 Parent 建構函式 成為 Children 的方法,然後呼叫它。Children 就會收到 Parent 的建構函式中定義的屬性和方法。例如,用下面

HTML中呼叫JavaScript情況和規範寫法

JavaScript執行在html中,引用有幾種方式? 我知道的方法有3種: 第一種:外部引用遠端JavaScript檔案。如<script type="text/javascript" src="../js/jquery-1.8.3.js"></script>(相對

全面理解Javascript閉包和閉包的寫法及用途【轉】

內部 ron 除了 因此 擁有 否則 這一 sage ssa 一、什麽是閉包和閉包的幾種寫法和用法 1、什麽是閉包 閉包,官方對閉包的解釋是:一個擁有許多變量和綁定了這些變量的環境的表達式(通常是一個函數),因而這些變量也是該表達式的一部分。閉包的特點:  1. 作為一個函

全面理解Javascript閉包和閉包的寫法及用途

  好久沒有寫部落格了,過了一個十一長假都變懶了,今天總算是恢復狀態了。好了,進入正題,今天來說一說javascript裡面的閉包吧!本篇部落格主要講一些實用的東西,主要將閉包的寫法、用法和用途。  一、什麼是閉包和閉包的幾種寫法和用法 1、什麼是閉包 閉包,官方對

網頁空跳轉連結的寫法 javascript:void(0) #

Javascript中void是一個操作符,該操作符指定要計算一個表示式但是不返回值。 void 操作符用法格式如下: 1. javascript:void (expression) 2. javascript:void expression expression 是一

javascript中for迴圈的寫法與總結

如果您希望一遍又一遍地執行相同的程式碼,並且每次的值都不同,那麼使用迴圈是很方便的。迭代語句又叫迴圈語句。 JavaScript 支援不同型別的迴圈: for - 迴圈程式碼塊一定的次數 for/in - 迴圈遍歷物件的屬性 while - 當指定

javascript外掛的寫法

一、js原生外掛的寫法 (1)工廠模式 var Helloword = function(objId){ var _get_dom = function(Id){ retur

JavaScript中for迴圈的寫法與效率總結

前言 對於for迴圈,相信大家再常用不過了。但是這回說下for迴圈是因為看程式碼時我居然沒有看明白一個for迴圈的意思,真是不應該啊。 這個for迴圈是這麼寫的: ? 1 2 3 for (var i = 0, rule;

JavaScriptMath函式,random(),ceil(),round(),floor()

1.Math.random(),返回在0~1之間的隨機整數。 2.Math.ceil(),返回值;返回大於或等於,並且與之最近的整數(如果x是正數,則把小數“入”;如果x是負數,則把小數“舍”)。 3

js函式寫法

第一:也是最常見的 function A(){ } 用法 A(); 第二: var B = function(){ } 用法 B();//這是匿名函式 第三: (function () {      })(); 或者 (function () {       }());

設置顏色的寫法

clas span ret keyword num string pretty ava ado 1. msgView.setBackgroundColor(Color.parseColor("#6D8FB0"));設置顏色的幾種寫法

單例模式寫法

遺憾 想象 develop 由於 tcl loader adr 希望 線程不安全 第一種(懶漢,線程不安全): Java代碼 public class Singleton { private static Singleton instance;

java單例的寫法

多線程 ibm 顯示 詳細 作者 jdk1.5 需要 fin serial 轉載出處:http://cantellow.javaeye.com/blog/838473 第一種(懶漢,線程不安全): 1 public class Singleton { 2 pr

JavaScript創建函數的區別以及優缺點。

friend type屬性 一個 多個 引用 定義 ret 安全 cto 工廠模式 function createPerson(name,age,job){ var o = new Object(); o.name = name; o.age = a

mybaties中,模糊查詢的寫法

uil 字符串 csdn clip data boa 大小寫 用法 .net 模糊查詢: 工作中用到,寫三種用法吧,第四種為大小寫匹配查詢 1. sql中字符串拼接 SELECT * FROM tableName WHERE name LIKE CONCAT(CO

python 學習筆記(循環,print的寫法,操作符)

alt 例如 並且 col str .com 判斷 標準 一起 一、循環( for, while) while循環是指在給定的條件成立時(true),執行循環體,否則退出循環。for循環是指重復執行語句。 break 在需要時終止for /while循環 continue

元素居中寫法

transform solid bottom pla 所有 百分比 兼容ie height 必須 /** * 兼容所有瀏覽器,不兼容移動端 * 元素必須有固定寬度高度 */ .box{

Java多線程的寫法

pri tca exc exce ++ executor main方法 多線程 ext Java多線程的在開發中用到的很多,簡單總結一下幾種寫法,分別是繼承Thread方法,實現Runnable接口,實現Callable接口;1.繼承Thread方法 class TestT

JavaScript常見的創建方式

自定義 圖片 () 屬性 創建方式 return語句 bubuko 之前 object 1.通過Object構造函數或者對象字面量創建單個對象 使用字面量方法創建對象:var stut = {name: "張三"}; 使用內置構造函數創建對象:var stu = new O