溫馨提示×

溫馨提示×

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

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

javascript如何定義類

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

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

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

本教程操作環(huán)境:windows10系統(tǒng)、javascript1.8.5版、Dell G3電腦。

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

在面向?qū)ο缶幊讨校?class)是對象(object)的模板,定義了同一組對象(又稱"實例")共有的屬性和方法。

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

一、構(gòu)造函數(shù)法

這是經(jīng)典方法,也是教科書必教方法。它用構(gòu)造函數(shù)模擬"類",在其內(nèi)部用this關(guān)鍵字指代實例對象。

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

生成實例的時候,使用new關(guān)鍵字。

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

類的屬性和方法,還可以定義在構(gòu)造函數(shù)的prototype對象之上。

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

關(guān)于這種方法的詳細(xì)介紹,請看系列文章《JavaScript面向?qū)ο缶幊獭?,這里就不多說了。它的主要缺點是,必教復(fù)雜,用到this和prototype,編寫和閱讀都很費力。

二、Object.create()法

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

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

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();
  }
}

這種方法比"構(gòu)造函數(shù)法"簡單,但是不能實現(xiàn)私有屬性和私有方法,實例對象之間也不能共享數(shù)據(jù),對"類"的模擬不夠全面。

三、極簡主義法

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

3.1 封裝

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

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

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

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

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

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

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

這種方法的好處是,容易理解,結(jié)構(gòu)清晰優(yōu)雅,符合傳統(tǒng)的"面向?qū)ο缶幊?quot;的構(gòu)造,因此可以方便地部署下面的特性。

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

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI