JS如何實作物件導向程式設計? js物件導向程式設計的原理介紹
html
javascript
node.js
本篇文章帶給大家的內容是關於JS如何實現物件導向程式設計? js物件導向程式設計的原理介紹,有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。
1、物件導向程式設計是什麼
它是用抽象的方式創建基於現實世界模型的程式模式(將資料和程式指令組合到物件中)
# 2.物件導向程式設計的目的
在程式設計中促進更好的靈活性和可維護性,在大型軟體工程中廣為流行。
3、物件導向程式設計的優勢(繼承、多型、封裝)
繼承:取得父類別的全部(資料和功能),實現的是複製。
多型態:根據實作方法的對象,相同方法名稱有不同的行為。
封裝:聚合物件資料和功能,以及限制它們和外界的聯繫(存取權限)。
JS中如何實作物件導向程式設計(參考)
1、原型鍊式繼承
function Person() { this.name = 'per' this.obj = { name: '' } } Person.prototype.getName = function() { return this.obj.name } Person.prototype.setName = function(name) { this.name = name // 引用类型的赋值会同步给所有子类 this.obj.name = name } function Student() { } Student.prototype = new Person() const stu1 = new Student() const stu2 = new Student() stu1.setName('stu') stu1.getName() stu2.getName()
登入後複製
缺點:引用型別修改時會同步給所有子類別
2、建構子繼承
function Person() { this.obj = { name: 'a' } this.setName = name => { this.obj.name = name } this.getName = () => { return this.obj.name } } function Student() { Person.call(this) } const stu1 = new Student() const stu2 = new Student() stu1.setName('stu') stu1.getName() stu2.getName()
登入後複製
缺點:父類別的函式在子類別下面是不共享的,相當於動態的複製了一份程式碼
3、組合繼承
function Person() { this.obj = { name: 'a' } } Person.prototype.getName = function() { return this.obj.name } Person.prototype.setName = function(name) { this.name = name // 引用类型的赋值会同步给所有子类 this.obj.name = name } function Student() { // 继承属性 Person.call(this) } // 继承方法 Student.prototype = new Person()
登入後複製
缺點:父類別內的屬性複製執行了兩遍
4、寄生組合式繼承
function Person() { this.obj = { name: 'a' } } Person.prototype.getName = function() { return this.obj.name } Person.prototype.setName = function(name) { this.name = name // 引用类型的赋值会同步给所有子类 this.obj.name = name } function Student() { // 继承属性 Person.call(this) } // 这里实现方法的继承 function inherit(sub, parent) { sub.prototype = Object.create(parent.prototype) sub.prototype.constructor = sub } inherit(Student, Person)
登入後複製
這裡解決了組合式繼承的父類別程式碼二次執行問題
5、class實作繼承(參考)
class Person { constructor(){ this.obj = { name: 'a' } } get name() { return this.obj.name } set name(name) { this.obj.name = name } } class Student extends Person { constructor() { super() } }
登入後複製
相關推薦:
以上是JS如何實作物件導向程式設計? js物件導向程式設計的原理介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

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

熱門文章
Windows 11 KB5054979中的新功能以及如何解決更新問題
3 週前
By DDD
如何修復KB5055523無法在Windows 11中安裝?
2 週前
By DDD
Inzoi:如何申請學校和大學
4 週前
By DDD
如何修復KB5055518無法在Windows 10中安裝?
2 週前
By DDD
在哪裡可以找到Atomfall中的站點辦公室鑰匙
4 週前
By DDD

熱工具

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

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

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

Dreamweaver CS6
視覺化網頁開發工具

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