ECMAScript6入門之Class物件的實例詳解
這篇文章主要介紹了詳解ECMAScript6入門--Class對象,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟著小編過來看看吧
物件導向的語言有一個標誌,那就是他們都有類別的概念,透過類別可以創造任意多個具有相同屬性和方法的物件。
ECMAScript5中沒有類別的概念,因此它的物件和基於類別的語言中的物件有所不同。
Javascript產生物件的傳統方法是透過建構函式來實現的
function Person(name, age){ this.name = name; this.age = age; this.sayHello = function(){ return "Hello "+ this.name; } } var person = new Person("dahan",18); person.sayHello(); //Hello dahan
上述這種方式因為和Javascript中宣告方法的形式一樣,所以物件和方法的區分並不明顯,容易造成混淆。
ES6引進了Class
(類別)的概念,我們透過ES6的語法進行建立物件的時候,可以像Java語法一樣,使用關鍵字class
,用來定義類別。當然,這種語法的功能,透過ES5也都可以實現,它只是讓類別的定義更清晰,更容易理解。
//类的定义 class Person { //ES6中新型构造器 constructor(name) { this.name = name; } //实例方法 sayName() { console.log("我的名字叫"+ this.name); } } //类的继承 class Programmer extends Person { constructor(name) { //直接调用父类构造器进行初始化 super(name); } program() { cosnole.log("这是我的地盘"); } } //运行测试 var person = new Person('lingxiao'); var coder = new Programmer('coder'); person.sayName(); //我的名字叫lingxiao coder.sayName(); //我的名字叫coder coder.program(); //这是我的地盘
下面來注意講述一下上述程式碼中出現的語法。
constructor
constructor
是類別的預設方法,就像Java中的main方法一樣,每個類別都必須有 constructor
方法。
在透過new
實例化物件的時候,就會自動呼叫constructor
方法,得到的也就是constructor
傳回的值。 constructor
預設傳回目前類別的實例物件(this)
,但是我們也可以指定另外一個對象,當然,這樣就會導致實例化出來的對象,並不是目前類別的實例。
class Person { constructor(){ var ob = new Object(); return Ob; } sayHello(){ return "Hello World" } } var person = new Person(); person.sayHello(); //Uncaught TypeError: person.sayHello is not a function
我們在實例化物件的時候,ES6規定我使用new關鍵字,如果直接調用,會當成函數來調用。
class Person { constructor(name){ this.name = name; } }; var person = Person("dahan"); //Uncaught TypeError: Class constructor Person4 cannot be invoked without 'new'
this
在最開始的程式碼中,我們看到了this,this在類別中指向的就是實例本身,但是如果我們在類別的方法中使用了this,單獨呼叫此方法的時候,就會出現錯誤。
class Person{ constructor(name){ this.name = name; } sayHello() { return "Hello "+this.name } } var person = new Person("dahan"); var sayHello = person.sayHello; sayHello(); //Uncaught TypeError: Cannot read property 'name' of undefined
針對這個我們可以很簡單的在建構方法中綁定this
class Person{ constructor(name){ this.name = name; this.sayHello = this.sayHello.call(this); } sayHello() { return "Hello "+this.name } }
#繼承extend
我們想要在一個類別上擴展一些屬性,但又不想修改原類,就用到了繼承。
//类的继承 class Programmer extends Person { constructor(name,age) { this.age = age;//报错 //直接调用父类构造器进行初始化 super(name); } program() { cosnole.log("这是我的地盘"); } }
使用繼承的時候,需要用super
關鍵字來呼叫父類,super(name)
就呆逼啊呼叫父類的constructor
方法。
另外,我們使用的繼承的時候,super
關鍵字也幫我們改變了this
的指向,所以我們必須先呼叫super
方法,然後才能使用this
。 ES6要求,子類別的建構函數必須執行一次super
函數,否則就會報錯。
最後
class
關鍵字的出現,也讓Javascript看起來更像一個物件導向語言,願Javascript越變越好越易用。
以上是ECMAScript6入門之Class物件的實例詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

類別和方法的概念和實例類別(Class):用來描述具有相同的屬性和方法的物件的集合。它定義了該集合中每個物件所共有的屬性和方法。物件是類別的實例。方法:類別中定義的函數。類別的建構方法__init__():類別有一個名為init()的特殊方法(建構方法),該方法在類別實例化時會自動呼叫。實例變數:在類別的宣告中,屬性是用變數來表示的,這種變數就稱為實例變量,實例變數就是用self修飾的變數。實例化:建立一個類別的實例,類別的具體物件。繼承:即一個派生類別(derivedclass)繼承基底類別(baseclass)的

class是python中的一個關鍵字,用來定義一個類,定義類別的方法:class後面加一個空格然後加類名;類名規則:首字母大寫,如果多個單字用駝峰命名法,如【class Dog()】。

jQuery是一種經典的JavaScript庫,被廣泛應用於網頁開發中,它簡化了在網頁上處理事件、操作DOM元素和執行動畫等操作。在使用jQuery時,常會遇到需要取代元素的class名稱的情況,本文將介紹一些實用的方法,以及具體的程式碼範例。 1.使用removeClass()和addClass()方法jQuery提供了removeClass()方法來刪除

在編寫PHP程式碼時,使用類別(Class)是一個非常常見的做法。透過使用類,我們可以將相關的功能和資料封裝在一個單獨的單元中,使程式碼更加清晰、易於閱讀和易於維護。本文將詳細介紹PHPClass的用法,並提供具體的程式碼範例,幫助讀者更好地理解如何在實際專案中應用類別來優化程式碼。 1.建立和使用類別在PHP中,可以使用關鍵字class來定義一個類,並在類別中定義屬性和方法。

Vue報錯:無法正確使用v-bind綁定class和style,怎麼解決?在Vue開發中,我們常常會用到v-bind指令來動態綁定class和style,但是有時候我們可能會遇到一些問題,如無法正確使用v-bind綁定class和style。在本篇文章中,我將為你解釋這個問題的原因,並提供解決方案。首先,讓我們先來了解v-bind指令。 v-bind用於將V

jquery判斷元素是否有class的方法:1、透過「hasClass('classname')」方法判斷元素是否具有某個class;2、透過「is('.classname')」方法判斷元素是否具有某個class。
![解決'[Vue warn]: v-bind:class/ :class”錯誤的方法](https://img.php.cn/upload/article/000/465/014/169300902772563.jpg?x-oss-process=image/resize,m_fill,h_207,w_330)
解決「[Vuewarn]:v-bind:class/:class」錯誤的方法在使用Vue開發過程中,我們常常會遇到一些錯誤提示,其中一個常見的錯誤就是「[Vuewarn]:v-bind:class /:class”錯誤。這個錯誤提示通常出現在我們使用v-bind:class或:class屬性時,表示Vue無法正確解析我們設定的class值。那麼,如

背景最近針對公司框架進行關鍵業務代碼進行加密處理,防止透過jd-gui等反編譯工具能夠輕鬆還原工程代碼,相關混淆方案配置使用比較複雜且針對springboot項目問題較多,所以針對class文件加密再通過自訂的classloder進行解密加載,此方案並不是絕對安全,只是加大反編譯的困難程度,防君子不防小人,整體加密保護流程圖如下圖所示maven插件加密使用自訂maven插件對編譯後指定的class檔案進行加密,加密後的class檔案拷貝到指定路徑,這裡是儲存到resource/corecla
