亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

javascript如何定義類

發布時間:2022-02-22 09:09:27 來源:億速云 閱讀:144 作者:小新 欄目:web開發

這篇文章將為大家詳細講解有關javascript如何定義類,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

JavaScript定義類的三個方法:1、利用構造函數定義類,語法為“function name(){this.name=value;}”;2、利用“Object.create()”方法定義類;3、利用“createNew()”方法定義類。

本教程操作環境:windows10系統、javascript1.8.5版、Dell G3電腦。

javascript定義類的三個方法是什么

在面向對象編程中,類(class)是對象(object)的模板,定義了同一組對象(又稱"實例")共有的屬性和方法。

JavaScript語言不支持"類",但是可以用一些變通的方法,模擬出"類"。

一、構造函數法

這是經典方法,也是教科書必教方法。它用構造函數模擬"類",在其內部用this關鍵字指代實例對象。

function Cat(){
  this.name = "大毛";
}

生成實例的時候,使用new關鍵字。

var cat1 = new Cat();
alert(cat1.name);   //大毛

類的屬性和方法,還可以定義在構造函數的prototype對象之上。

Cat.prototype.makeSound = function(){
  alert("喵喵喵");
}

關于這種方法的詳細介紹,請看系列文章《JavaScript面向對象編程》,這里就不多說了。它的主要缺點是,必教復雜,用到this和prototype,編寫和閱讀都很費力。

二、Object.create()法

為了解決"構造函數法"的缺點,更方便地生成對象,JavaScript的國際標準ECMAScript第五版(目前通行的是第三版),提出了一個新的方法Object.create()。

用這個方法,"類"就是一個對象,不是函數。

var Cat = {
  name: "大毛",
  makeSound: function(){
    alert("喵喵喵");
  }
};

然后,直接用Object.create()生成實例,不需要用到new。

var cat1 = Object.create(Cat);
alert(cat1.name);   //大毛
cat1.makeSound();   //喵喵喵

目前,各大瀏覽器的最新版本(包括IE9)都部署了這個方法。如果遇到老式瀏覽器,可以用下面的代碼自行部署。

if(!Object.create){
  Object.create = function(o){
    function F(){};
    F.prototype = o;
    return new F();
  }
}

這種方法比"構造函數法"簡單,但是不能實現私有屬性和私有方法,實例對象之間也不能共享數據,對"類"的模擬不夠全面。

三、極簡主義法

荷蘭程序員Gabor de Mooij 提出了一種比Object.create()更好的新方法,它稱這種方法為"極簡主義法"(minimalist approach)。這也是我推薦的方法。

3.1 封裝

這種方法不適用this和prototype,代碼部署起來非常簡單,這大概也是它被叫做"極簡主義法"的原因。

首先,它也是用一個對象模擬"類"。在這個類里面,定義一個構造函數caeateNew(),用來生成實例。

var Cat = {
  createNew: function(){
    //some code here
  }
};

然后,在carateNew()里面,定義一個實例對象,把這個實例對象作為返回值。

var Cat = {
  createNew: function(){
    var cat = {};
    cat.name = "大毛";
    car.makeSound = function(){
      alert("喵喵喵");
    };
  }
};

使用的時候,調用createNew()方法,就可以得到實例對象。

var cat1 = Cat.createNew();
cat1.makeSound();   //喵喵喵

這種方法的好處是,容易理解,結構清晰優雅,符合傳統的"面向對象編程"的構造,因此可以方便地部署下面的特性。

關于“javascript如何定義類”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節

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

AI

日土县| 汉寿县| 新安县| 新民市| 宜城市| 杨浦区| 台湾省| 锦屏县| 淮北市| 瓦房店市| 龙陵县| 抚宁县| 江城| 荥经县| 沙洋县| 时尚| 英山县| 朝阳县| 安化县| 三亚市| 江都市| 万载县| 长乐市| 青川县| 丰顺县| 南召县| 武平县| 浙江省| 黔西| 双柏县| 新泰市| 土默特右旗| 武鸣县| 徐汇区| 延安市| 洛宁县| 平乡县| 渝中区| 景洪市| 丹阳市| 华宁县|