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前面加運算子,常見的是!與void
!function(){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 (){}
這幾種方法每一個都有不一樣的作用。
- 這裡寫程式碼片myfun:function(){} 這個是必須寫在物件內部的,這是一個物件的方法,如
var a = {
myfun:function(){}
}
寫在外面會報錯。
- 任何時候都不要這樣寫myfun = function(){},這樣寫就變成了全域性物件window的一個屬性,要記得加上var ,第四種方式是對的,如下:
var myfun = function(){}
這是一種宣告函式的方式,左邊是一個變數,右邊是一個函式的表示式,意思就是把一個匿名的函式表示式複製給了變數myfun,只是聲明瞭一個變數指向了一個函式物件。這個和第三種方法function myfun(){}宣告的方法差別不大,但還是有差別的。
這就要涉及到javascript解析的部分了,簡單來說,js在解析的過程中,會先把函式和變數提前解析。
function myfun(){}這種宣告方法會把函式整個語句顯示的提前到了指令碼或者函式前(當前作用域),函式名和函式均會被提前(會在執行上下文程式碼前宣告)。
而var myfun = function(){}這種宣告方法,只是提前了一個變數,並沒有提前函式體。
- 最後一種並不是宣告的函式,只是在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;
JavaScript的幾種Math函式,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