亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

JavaScript中的類與實例實現方法

2019-11-20 13:20:03
字體:
來源:轉載
供稿:網友

本文實例講述了JavaScript中的類與實例實現方法。分享給大家供大家參考。具體如下:

JavaScript 中沒有父類, 子類的概念, 也沒有class 和 instance 的概念, 全靠 prototype chain來實現繼承. 當查找一個對象的屬性時, JavaScript 會向上遍歷 prototype chain, 直到找到對應的屬性為止. 有幾種方法, 可以使得 JavaScript 模擬出 class 和 instance 的概念.

1. 直接使用構造函數來創建對象, 在構造函數內部使用 this指代對象實例.

復制代碼 代碼如下:
function Animal() { 
 this.name = "animal"; 
 } 
 Animal.prototype.makeSound = function() { 
 console.log("animal sound"); 
 } 
[Function] 
 var animal1 = new Animal(); 
 animal1.name; 
'animal' 
 animal1.makeSound(); 
animal sound

再看另外一個例子:
復制代碼 代碼如下:
function Point(x, y) { 
 this.x = x; 
 this.y = y; 
 } 
 Point.prototype = { 
 method1: function() { console.log("method1"); }, 
 method2: function() { console.log("method2"); }, 
 } 
{ method1: [Function], method2: [Function] } 
 var point1 = new Point(10, 20); 
 point1.method1(); 
method1 
 point1.method2(); 
method2

以上, 先指定好一個構造函數對象的 prototype 屬性. 然后 new 一個該對象實例, 即可調用 prototype 中指定的方法.

2. 使用 Object.create()方法來創建對象

復制代碼 代碼如下:
var Animal = { 
 name: "animal", 
 makeSound: function() { console.log("animal sound"); }, 
 } 
 var animal2 = Object.create(Animal); 
 animal2.name; 
'animal' 
 console.log(animal2.name); 
animal 
 animal2.makeSound(); 
animal sound

該方法, 比構造函數的方法更簡便, 但不能實現私有屬性和私有方法, 且實例對象之間不能共享數據, 對 class 的模擬仍不夠全面.

3. 荷蘭程序員 Gabor de Mooij 提出的極簡主義法(minimalist approach). 推薦用法.

復制代碼 代碼如下:
var Animal = { 
 init: function() { 
 var animal = {}; 
 animal.name = "animal"; 
 animal.makeSound = function() { console.log("animal sound"); }; 
 return animal; 
 } 
 }; 
 var animal3 = Animal.init(); 
 animal3.name; 
'animal' 
 animal3.makeSound(); 
animal sound

不使用 prototype 和 this, 僅需要自定義一個構造函數init. 繼承的實現也很簡單.
復制代碼 代碼如下:
var Cat = { 
 init: function() { 
 var cat = Animal.init(); 
 cat.name2 = "cat"; 
 cat.makeSound = function() { console.log("cat sound"); }; 
 cat.sleep = function() { console.log("cat sleep"); }; 
 return cat; 
 } 
 } 
 var cat = Cat.init(); 
 cat.name; // 'animal' 
 cat.name2; // 'cat' 
 cat.makeSound(); // 類似于方法的重載 
cat sound 
 cat.sleep(); 
cat sleep

私有屬性和私有方法的使用:
復制代碼 代碼如下:
var Animal = { 
 init: function() { 
 var animal = {}; 
 var sound = "private animal sound"; // 私有屬性 
 animal.makeSound = function() { console.log(sound); }; 
 return animal; 
 } 
 }; 
 var animal4 = Animal.init(); 
 Animal.sound; // undefined 私有屬性只能通過對象自身的方法來讀取. 
 animal.sound; // undefined 私有屬性只能通過對象自身的方法來讀取 
 animal4.makeSound(); 
private animal sound

只要不是定義在animal對象上的屬性和方法都是私有的, 外界不能訪問.
類與實例之間, 可以做到數據共享.
復制代碼 代碼如下:
var Animal = { 
 sound: "common animal sound", 
 init: function() { 
 var animal = {}; 
 animal.commonSound = function() { console.log(Animal.sound); }; 
 animal.changeSound = function() { Animal.sound = "common animal sound changed"; }; 
 return animal; 
 } 
 } 
 var animal5 = Animal.init(); 
 var animal6 = Animal.init(); 
 Animal.sound; // 可以視為類屬性 
'common animal sound' 
 animal5.sound; // 實例對象不能訪問類屬性 
undefined 
 animal6.sound; 
undefined 
 animal5.commonSound(); 
common animal sound 
 animal6.commonSound(); 
common animal sound 
 animal5.changeSound(); // 修改類屬性 
undefined 
 Animal.sound; 
'common animal sound' 
 animal5.commonSound(); 
common animal sound 
 animal6.commonSound(); 
common animal sound

如 Animal.sound 就是類與實例的共有屬性, 可以視為類屬性和類方法.
若一個實例修改了該共有屬性, 則該類和其他實例的共有屬性也對應修改了.
綜上, 就是 JavaScript 中模擬的 class 和 instance 的概念和用法.

希望本文所述對大家的javascript程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美性色视频在线| 成人免费高清完整版在线观看| 92版电视剧仙鹤神针在线观看| 中文字幕国产亚洲| 亚洲精品乱码久久久久久金桔影视| 在线观看视频亚洲| 中文在线不卡视频| 亚洲精美色品网站| 国产网站欧美日韩免费精品在线观看| 久久久精品视频在线观看| 亚洲男人天堂2024| 人人澡人人澡人人看欧美| 伦理中文字幕亚洲| 亚洲美腿欧美激情另类| 不卡av日日日| 国产午夜精品视频免费不卡69堂| 久久影视电视剧凤归四时歌| 欧美片一区二区三区| 日韩精品在线观看一区二区| 欧美在线亚洲在线| 国产日韩精品一区二区| 亚洲国产第一页| 欧美精品国产精品日韩精品| 色综合影院在线| 欧美床上激情在线观看| 日韩在线观看av| 欧美性猛交xxxx富婆弯腰| 欧美中文字幕在线视频| 在线日韩av观看| 2025国产精品视频| 精品一区电影国产| 日韩69视频在线观看| 国产日韩欧美在线观看| 国产精品69精品一区二区三区| 亚洲一区二区三区四区在线播放| 成人在线精品视频| 亚洲白虎美女被爆操| 国产91精品久久久久| 亚洲国产一区二区三区四区| 欧美激情一二三| 97视频国产在线| 伊人一区二区三区久久精品| 亚洲精品国产精品国自产观看浪潮| 久久精品夜夜夜夜夜久久| 98视频在线噜噜噜国产| 国产99视频精品免视看7| 亚洲四色影视在线观看| 欧美成年人在线观看| 欧美噜噜久久久xxx| 亚洲欧美国产va在线影院| 久久人人爽亚洲精品天堂| 久久亚洲国产精品| 国产91精品在线播放| 欧美亚洲国产另类| 北条麻妃久久精品| 亚洲自拍小视频| 久久99亚洲精品| 国产免费观看久久黄| 欧美一性一乱一交一视频| 日韩精品在线第一页| 国产成人精品网站| 91av在线播放视频| www高清在线视频日韩欧美| 亚洲韩国欧洲国产日产av| 亚洲第一免费网站| 一本色道久久88综合日韩精品| 国产精品国产三级国产aⅴ9色| 性色av一区二区三区在线观看| 日韩成人av网址| 亚洲国产精久久久久久久| 中文字幕精品久久久久| 欧美成人激情图片网| 另类专区欧美制服同性| 国产精品久久久久久久天堂| 中文字幕日韩精品在线观看| 亚洲电影免费观看高清完整版| 91精品视频在线| 在线亚洲欧美视频| 91精品国产91久久久久| 国产一区二区在线免费视频| 日韩欧美一区视频| 久久久欧美一区二区| 成人www视频在线观看| 亚洲综合在线小说| 国产精品久久久| 亚洲美女久久久| 岛国av午夜精品| 亚洲国产精彩中文乱码av| 色偷偷噜噜噜亚洲男人的天堂| 亚洲色图日韩av| 69**夜色精品国产69乱| 欧美激情一区二区三区在线视频观看| 欧美自拍视频在线| 亚洲福利小视频| 尤物tv国产一区| 成年无码av片在线| 69精品小视频| 国产做受69高潮| 亚洲欧美国产日韩天堂区| 福利微拍一区二区| 亚洲国产精品人久久电影| 日韩精品极品视频| 亚洲激情小视频| 国产精品美女主播在线观看纯欲| 亚洲第一网中文字幕| 91精品国产91久久| 日韩视频免费大全中文字幕| 91超碰中文字幕久久精品| 国产精品视频一区二区三区四| 最好看的2019年中文视频| 伊人久久久久久久久久| 欧美日韩在线观看视频小说| 91av在线影院| 亚洲色图欧美制服丝袜另类第一页| 久久精品99久久香蕉国产色戒| 欧美日韩免费在线观看| 国产自产女人91一区在线观看| 亚洲а∨天堂久久精品9966| 亚州国产精品久久久| 亚洲欧美国产制服动漫| 蜜月aⅴ免费一区二区三区| 中文欧美在线视频| 欧美xxxx14xxxxx性爽| 2018中文字幕一区二区三区| 亚洲免费视频观看| 欧美精品一本久久男人的天堂| 日韩在线观看你懂的| 日韩av免费一区| 国产91露脸中文字幕在线| 国产一区红桃视频| 国产中文欧美精品| 欧美午夜片欧美片在线观看| 日韩在线中文字| 欧美视频在线视频| 欧洲永久精品大片ww免费漫画| 久久久久久久一区二区三区| 亚洲精品一区av在线播放| 国产一区二区三区精品久久久| 精品国产91久久久久久| 欧美第一黄网免费网站| 成人午夜两性视频| 亚洲一区二区三区乱码aⅴ蜜桃女| 2020欧美日韩在线视频| 国产精品极品美女在线观看免费| 亚洲美女www午夜| 欧美亚洲视频一区二区| 国产精品久久久久久久美男| 日韩美女视频中文字幕| 久久国产精品视频| 日韩精品极品毛片系列视频| 国产精品99久久99久久久二8| 九九热这里只有在线精品视| 日韩电影大片中文字幕| 国产91精品高潮白浆喷水| 欧美在线视频a| 欧美性猛交xxxx乱大交极品| 欧美成人精品h版在线观看| 欧美成人免费一级人片100| 亚洲精品欧美一区二区三区| 亚洲一区二区三区xxx视频| 欧美日韩亚洲精品一区二区三区| 久久影院在线观看| 亚洲国产精品嫩草影院久久| 亚洲第一区中文字幕|