国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > JS > 正文

JavaScript 學習 - 提高篇

2024-09-06 12:43:38
字體:
來源:轉載
供稿:網友

JavaScript 學習 - 提高篇

一. JavaScript中的對象.

JavaScript中的Object是一組數據的key-value的集合, 有點類似于Java中的HashMap, 所有這些數據都是Object里的property. 通常情況下, JavaScript中建立一個對象用"new"加上constructor function來實現. 如new Date(), new Object()等.

var book = new Object();
book.name = "JavaScript is Cool";
book.author = "tom";
book.pages = 514;

上面例子中的name和page就是名為book的對象中的property. 我們可以用delete來刪除Object中的property: "delete book.name;". 除了Object, Date等buildin的對象外, 我們可以寫自己的constructor function, 然后使用new就可以建立自己的對象. 如上面的book可以寫成:

function Book (name, author, page) {
 this.name = name;
 this.author = author;
 this.page = page;
}
var abook = new Book("JavaScript is Cool", "tom", 514);

二. function的用法

在JavaScript中, function是一種數據類型, 所有的function都是從buildin的Function object 衍生的對象. 所以在JavaScript 中function可以作為參數傳遞, 可以作為Object的property, 也可以當作函數返回值. function在JavaScript中有兩種用法, 一種是當作constructor, 前面加上new keyword用來建立對象. 一種是當作method, 為其他對象調用.

注意function和method在中文里的意思相當, 在有些語言里也可以通用. 但是在JavaScript中, 它們還是有所區別的. function本身是是一個對象, 而當作為一個方法他屬于一個對象時, 就成為了一個這個對象的method, 相當于一個對象種的屬性. 也就是說method是相對于一個對象而言的, function在某些情況下成為了一個對象的method.

function Book(name, author, page) {
 this.name = name;
 this.author = author;
 this.page = page;
 this.getReader = Book_getReader;
}

function Book_getReader() {
 //....
}

上面的例子種, function Book_getReader()就成為了Book的一個名為getReader的method. call()和apply()是Function object 的兩個方法, 它們也可以使一個function作為另一個對象的method來調用用. call()和apply()都需要參數, 而第一個參數就是調用對象, 也就是當function內部出現this時, this所指的對象. call()和apply()的區別在于call()可以傳遞任意長度參數, 只要第一個參數時調用對象. 而apply只接受兩個參數, 需要將除調用對象外的所有參數放入一個數組中. 即:

function getBooksWithSameAuthor(form, to) {
 var name = this.author;
 var books = ...
 //get books written by name and from year "from"  to year "to"
 return books;
}

var abook = new Book("JavaScript is Cool", "tom", 514);
var books = getBooksWithSameAuthor.call(abook, 1990, 2005);

var books = getBooksWithSameAuthor.apply(abook, [1990, 2005]);

當一個function不作為一個對象的method時, JavaScript會認為它是屬于一個Globle Object對象的method, 這個Globle Object在Browser中就是window類. 所以從這個角度來說, function和method又可以統一起來了.

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 察隅县| 武夷山市| 仲巴县| 吴江市| 尚义县| 白山市| 古丈县| 临汾市| 鄱阳县| 碌曲县| 广灵县| 海伦市| 康乐县| 临汾市| 来凤县| 基隆市| 开原市| 繁昌县| 阳西县| 九江县| 华容县| 宁明县| 祁阳县| 邵东县| 大丰市| 奇台县| 改则县| 巴彦淖尔市| 德庆县| 汝南县| 宁武县| 黑河市| 施甸县| 苗栗县| 都江堰市| 蒙城县| 阜宁县| 隆回县| 罗定市| 繁峙县| 西藏|