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

首頁 > 編程 > JavaScript > 正文

JS創(chuàng)建類和對象的兩種不同方式

2019-11-20 14:17:28
字體:
供稿:網(wǎng)友

在JavaScript中, 當你定義了一個新的函數(shù), 你實際上聲明了一個新的類, 而這個函數(shù)本身就相當于類的構(gòu)造函數(shù)。下面的代碼向你展示了兩種不同的方式來創(chuàng)建一個新的Person類, 而Person.prototype的定義也緊跟在函數(shù)定義之后。

var Person = function(name) { // 一個匿名函數(shù), 并將這個函數(shù)賦值給一個Person變量, 此時Person成為一個類 this.name = name; } function Person(name) { // 直接定義一個叫做Person的函數(shù)表示Person類 this.name = name; } Person.prototype = { // 定義Person的prototype域 printName: function() { // 定義一個print函數(shù) alert(this.name); } }

當你通過函數(shù)的方式聲明了一個類之后, 你就可以通過new操作符來實例化這個類。這樣, 你就可以調(diào)用類的成員函數(shù)來完成你的邏輯。

var person = new Person("Joe Smith"); // 使用new操作符來新建一個Person的實例, 并賦給變量person person.printName(); // person就可以看作是一個實例的引用(reference), 所以可以通過這個引用來調(diào)用Person類中的成員函數(shù)

我們來總結(jié)一下創(chuàng)建一個新的類的實例的整個流程和步驟:

1. 通過定義一個函數(shù)的方式(匿名或者實名)來聲明一個新的類.
2. 如果有必要, 定義這個新的類的prototype域.
3. 使用new操作符緊跟你所定義的函數(shù)來創(chuàng)建一個新的類的實例. 一旦JavaScript編譯器碰到了new操作符, 它實際上創(chuàng)建了一個空的類實例變量.
4. 將所有這個類的prototype域中的屬性與方法復(fù)制到這個新的實例中, 并將其成員函數(shù)中所有的this指針指向這個新創(chuàng)建的實例.
5. 接下來, 執(zhí)行緊跟在new操作符后面的那個函數(shù).
6. 當你執(zhí)行這個函數(shù)時, 如果你試圖對一個不存在的屬性進行賦值, JavaScript編譯器將自動為你在這個實例范圍內(nèi)新創(chuàng)建這個屬性.
7. 函數(shù)執(zhí)行完畢后, 將這個初始化完成的實例返回.

在Prototype中, 使用Class對象, 你可以以一個比較簡單的方式來聲明一個新的對象。通過使用Class.create(), prototype為你創(chuàng)建了一個默認的構(gòu)造函數(shù)initialize(), 一旦你實現(xiàn)這一函數(shù), 就可以以一個類似Java中構(gòu)造函數(shù)的方式來創(chuàng)建一個新的類的實例。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 丹寨县| 广昌县| 定州市| 灵丘县| 包头市| 仙游县| 通辽市| 博兴县| 江安县| 曲沃县| 曲沃县| 韶山市| 嵊泗县| 惠来县| 阳春市| 孟州市| 东阿县| 达日县| 泸西县| 竹溪县| 兴城市| 香河县| 双鸭山市| 泊头市| 荆门市| 禄劝| 连城县| 衡南县| 聊城市| 长沙县| 鱼台县| 宜君县| 曲松县| 华蓥市| 光泽县| 乌什县| 天台县| 如皋市| 云浮市| 舞阳县| 东山县|