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

首頁 > 語言 > JavaScript > 正文

JavaScript中的類與實例實現方法

2024-05-06 16:15:08
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了JavaScript中的類與實例實現方法,非常巧妙的模擬了類與實例的實現過程,具有一定參考借鑒價值,需要的朋友可以參考下
 

本文實例講述了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
青青草一区二区| 韩国国内大量揄拍精品视频| 在线视频中文亚洲| 日韩精品免费在线| 日韩欧美黄色动漫| 九九视频直播综合网| 97成人精品视频在线观看| 久久久成人精品视频| 国产精品久久久久久久久久| 欧美亚洲在线视频| 91精品国产色综合久久不卡98口| 波霸ol色综合久久| 久久久亚洲精品视频| 国产成人精品在线播放| 中文字幕欧美亚洲| 色小说视频一区| 亚洲一区二区三区香蕉| 亚洲综合社区网| 精品一区精品二区| 国产成人拍精品视频午夜网站| 国产aⅴ夜夜欢一区二区三区| 国产自产女人91一区在线观看| 国产脚交av在线一区二区| 国产精品亚洲精品| 国产suv精品一区二区| 欧美视频中文字幕在线| 久久综合国产精品台湾中文娱乐网| 伊人成人开心激情综合网| 91高清免费视频| 亚洲高清免费观看高清完整版| 国产精品久久久久久久久久久新郎| 国产一区av在线| 68精品国产免费久久久久久婷婷| 91麻豆桃色免费看| 日韩在线视频免费观看| 91亚洲国产成人久久精品网站| 久久91亚洲精品中文字幕| 久久久国产一区二区| 国产原创欧美精品| 综合激情国产一区| 日本国产精品视频| 色妞久久福利网| 91美女高潮出水| 国产一区二区三区久久精品| 精品久久久国产| 成人xvideos免费视频| 亚洲色图美腿丝袜| 中文字幕不卡在线视频极品| 成人性生交xxxxx网站| 国产成人精品一区二区三区| 久久免费观看视频| 国产一区红桃视频| 亚洲最大福利视频| 全球成人中文在线| 国产精品久久久久久久久久久久久| 亚洲国产高潮在线观看| 伊人亚洲福利一区二区三区| 国语自产偷拍精品视频偷| 红桃视频成人在线观看| 亚洲日本成人女熟在线观看| 国产在线999| 久久久www成人免费精品| 韩日欧美一区二区| 国产偷国产偷亚洲清高网站| 久久久久国产精品www| 亚洲视频欧洲视频| 精品国内产的精品视频在线观看| 中文字幕亚洲欧美日韩在线不卡| 国产伦精品一区二区三区精品视频| 午夜精品www| 日韩欧美在线视频日韩欧美在线视频| 亚洲精品视频在线播放| 亚洲成人三级在线| 日韩中文在线不卡| 国产日产亚洲精品| 久久久久久久久久久久久久久久久久av| 91视频国产精品| 亚洲国产精品va在线| 国产精自产拍久久久久久| 国产精品久久久久影院日本| 国产福利精品在线| 91亚洲精品久久久| 国产91精品高潮白浆喷水| 精品国产乱码久久久久久虫虫漫画| 亚洲人成网站在线播| 亚洲国产高潮在线观看| 国产精品久久精品| 一二美女精品欧洲| 国产精品美女在线观看| 国产亚洲在线播放| 久久天天躁夜夜躁狠狠躁2022| 国内精品一区二区三区四区| 欧美性做爰毛片| 精品久久香蕉国产线看观看亚洲| 57pao成人国产永久免费| 国产成人精品a视频一区www| 亚洲人av在线影院| 国产精品久久久久久久久久东京| 日本三级久久久| 国产女人精品视频| 97视频在线观看免费| 成人国产在线激情| 亚洲欧美日韩一区二区三区在线| 久久人人爽亚洲精品天堂| 日韩成人中文电影| 69久久夜色精品国产7777| 欧美国产在线电影| 久久久久久久久久国产精品| 91久久久久久国产精品| 国产97人人超碰caoprom| 久久在线免费观看视频| 国产精品久久久久久久久免费看| 国产高清视频一区三区| 亚洲男人天堂视频| 在线不卡国产精品| 色先锋久久影院av| 国产精品久久久久久亚洲调教| 91精品国产成人| 久久久99久久精品女同性| 91精品国产91久久久| 尤物九九久久国产精品的分类| 亚洲另类图片色| 26uuu久久噜噜噜噜| 欧美成人精品激情在线观看| 日韩av影视在线| 91美女片黄在线观| 中文字幕在线精品| 69av视频在线播放| 欧美亚洲在线观看| 日韩在线观看免费高清完整版| 91日本在线视频| 国产精品午夜国产小视频| 2019中文字幕在线观看| 成人黄色免费片| 亚洲精品国产电影| www.美女亚洲精品| 欧美午夜www高清视频| 久久人体大胆视频| 国产裸体写真av一区二区| 萌白酱国产一区二区| 亚洲欧美日韩一区二区在线| 国产精品吊钟奶在线| 国产视频在线观看一区二区| 亚洲精品国产精品乱码不99按摩| 成人久久久久爱| 国产深夜精品福利| 国产一区二中文字幕在线看| 成人福利网站在线观看11| 91精品国产综合久久久久久久久| 日韩av观看网址| 国产精品高潮呻吟视频| 中文字幕9999| 91精品国产91久久久久久不卡| 国产69精品久久久久9999| 精品中文字幕乱| 3344国产精品免费看| 中文字幕日韩欧美| 久久久免费在线观看| 国产精品视频xxx| 富二代精品短视频| 成人黄色片在线| 亚洲第一区第二区| 国产精品青草久久久久福利99| 精品久久久久久久久久久久|