91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

JavaScript中function是什么

發布時間:2020-12-02 10:43:29 來源:億速云 閱讀:270 作者:小新 欄目:web開發

這篇文章給大家分享的是有關JavaScript中function是什么的內容。小編覺得挺實用的,因此分享給大家做個參考。一起跟隨小編過來看看吧。

JavaScript 中的 function 有多重意義。它可能是一個構造器(constructor),承擔起對象模板的作用; 可能是對象的方法(method),負責向對象發送消息。還可能是函數,沒錯是函數,和對象沒有任何關系獨立存在的可以被調用的函數。

由于語言設計者的妥協,在 JavaScript 加入了一些 class 相關的特性,以使 JavaScript 看起來確實象 Java,可以 “面向對象”。雖然 JavaScript 添加了 new 和 this, 但卻沒有 class (ES已加)。最后 function 臨時擔負起 class 的任務。

語義1:作為構造器的 function

/**
@class Tab
@param nav {string} 頁簽標題的class
@param content {string} 頁面內容的class
**/
function Tab(nav, content) {
 this.nav = nav;
 this.content = content;
}
Tab.prototype.getNav = function() {
 return this.nav;
};
Tab.prototype.setNav = function(nav) {
 this.nav = nav;
};
Tab.prototype.add = function() {
};
// 創建對象
var tab = new Tab('tab-nav', 'tab-content');

這里定義了一個類 Tab,創建了一個對象 tab。以上使用了 function ,this, new。this, new 是常見的面向對象語言中的關鍵字, 這里的 function 則擔負傳統面向對象語言中的 class 作用。當然這時候標識符的命名一般遵循 “首字母大寫” 規則。

語義2:作為對象方法的 function

由于 JavaScript 中無需類也可以直接創建對象,因此有兩種方式給對象添加方法。第一種先定義類,方法掛在原型上,如上例的 Tab,原型上有 getNav、setNav 和 add 方法。以下還有一種,直接在 function 內的 this 上添加方法。

function Tab(nav, content) {
 this.nav = nav
 this.content = content
 this.getNav = function() {
// ...
}
 this.setNav = function() {
// ...
}
 this.add = function() {
// ...
}
}

這里 Tab 是語義, this.getNav/this.setNav/this.add 是語義,作為對象的方法。 另外,可以直接定義對象及其方法

var tab = {
 nav: '',
 content: '',
 getNav: function() {
// ...
},
 setNav: function() {
// ...
},
 add: function() {
// ...
}
}

tab.getNav/tab.setNav/tab.add 是語義,作為對象 tab 的方法。
語義3:作為獨立的函數

/*
判斷對象是否是一個空對象
@param obj {Object}
@return {boolean}
*/
function isEmpty(obj) {
 for (var a in obj) {
return false
}
 return true
}
// 定義一個模塊
~function() {
 // 輔助函數
 function now() {
return (new Date).getTime()
}
 // 模塊邏輯...
}();
// 采用CommonJS規范的方式定義一個模塊
define(require, exports, moduel) {
 // 輔助函數
 function now() {
return (new Date).getTime()
}
 // 模塊邏輯...
})

isEmpty 作為一個全局函數存在,模塊定義里面的 now 則作為局部函數存在,無論 isEmpty 還是 now 這里的 function 都指函數,它不依賴與對象和類,可以獨立被調用。
語義4:匿名函數定義模塊

// 全局命名空間
var RUI = {}
// ajax.js
~function(R) {
 // 輔助函數...
 ajax = {
request: function() {
  // ...
}
getJSON: function() {
  // ...
}
...
}
 // 暴露出模塊給 R
 R.ajax = ajax
}(RUI);
// event.js
~function(R) {
 // 輔助函數...
 // 事件模塊定義...
 // 暴露出模塊給 R
 R.event = event
}(RUI);
// dom.js
~function(R) {
 // 輔助函數...
 // DON模塊定義...
 // 暴露出模塊給 R
 R.dom = dom
}(RUI);

這里的匿名函數執行后把API對象暴露給了RUI,無論匿名函數內干了多少活,對應匿名函數外是看不到的,也是沒有必要去理會的。最終關心的是公開的 API 方法,只要了解這些方法的參數及意義就可以馬上使用它了。

語義5:匿名函數處理某些特殊效果如處理一些數據又不想暴露過多的變量

// 判斷IE版本的hack方式
var IEVersion = function() {
 var undef, v = 
 var p = document.createElement('p')
 var all = p.getElementsByTagName('i')
 while (
p.innerHTML = '<!--[if gt IE ' + (++v) + ']><i></i><![endif]-->',
all[]
);
 return v > ? v : undef
}();

最終只要一個結果 IEVersion,匿名函數內部用到了一些局部變量全部可以隔離開。這種方式對于一些臨時性的數據加工非常有效,緊湊。

感謝各位的閱讀!關于JavaScript中function是什么就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

清镇市| 郸城县| 托里县| 芜湖市| 莲花县| 迁西县| 庆阳市| 常宁市| 新民市| 梁河县| 长丰县| 阳西县| 额尔古纳市| 嫩江县| 剑阁县| 陇南市| 永济市| 孝昌县| 安陆市| 监利县| 梁平县| 普安县| 平武县| 黄冈市| 阜南县| 金溪县| 珲春市| 上蔡县| 金秀| 昌宁县| 元阳县| 南城县| 五台县| 普定县| 金华市| 靖远县| 太康县| 高阳县| 梧州市| 鄯善县| 呼伦贝尔市|