日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

js面向对象特征

發布時間:2025/3/20 编程问答 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 js面向对象特征 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
我們都知道js面向對象擁有三大特征,分別為封裝、繼承、多態,其實在javaScript腳本語言中是不存在多態的,但是可以用js的方式實現多態中的兩種效果重載、重寫,那下面我們就來說一下面向對象的特征

封裝

把抽象出的屬性和對屬性的方法封裝在一起對外實現接口開放,說白了就是封裝一個方法或是類可以傳入參數,供相同功能的外界使用,來達到相同的目的,便于對代碼的管理
  • 代碼

    class Package {constructor (animal){this.animal = animal}zoo (animal) {console.log('this is'+ this.animal)}static private () {console.log('我是私有方法')}}let newPackage = new Package('大象')newPackage.zoo()newPackage.private() // Uncaught TypeError: newPackage.private is not a function

    上面的一個比較簡單的封裝例子,通過animal參數傳遞來達到我們想要的結果,但是class類里面的靜態方法是不會對外開放的所以會找不到這個函數

繼承

繼承可以使得子類具有父類別的各種屬性和方法,而不需要再次編寫相同的代碼。在令子類別繼承父類別的同時,可以重新定義某些屬性,并重寫某些方法,即覆蓋父類別的原有屬性和方法,使其獲得與父類別不同的功能。另外,為子類追加新的屬性和方法也是常見的做法。
  • 代碼

    class PackageSon extends Package{constructor(animal, food){super(animal);this.food = food}zoo () {console.log('這是'+ this.animal)}eat () {console.log(this.animal+this.food)} }let newPackageSon = new PackageSon('大象', '吃草') newPackageSon.zoo() newPackageSon.eat()

上面的例子使用到了es6 class 語法糖內的super方法,其實它是實現了在這里指向了父類中的this對象,然后子類的構造函數再對其進行修改,然后zoo函數實現了對父類的重寫,eat函數是子類新增的函數

多態

最開始我們已經知道了js嚴格講是沒有多態的,多態可以表現出我們的代碼的多種狀態,同一操作作用于不同的對象,可以有不同的解釋,產生不同的執行結果。
  • 重載表現 代碼
    // 重載

    class overload {init (callback) {if (callback === 'go') {console.log('我是go')}else if(callback === 'eat') {console.log('我是eat')}else {console.log('我是sprot')}} }var newOverload = new overload() newOverload.init('go') newOverload.init('eat') newOverload.init('sprot')

上面是一個重載的例子,它根據我們調用構造函數傳入不同的參數,來實現不同的效果,其實這里也使用上面講到了的封裝,所以面向對象的特征是無處不在

  • 重寫表現 代碼
    // 重寫

    class rewrite {go () {console.log('我在走路')}sport () {console.log('我在運動')} } class rewriteSon extends rewrite{go () {console.log('我回家了')} }var newRewriteSon = new rewriteSon() newRewriteSon.go() newRewriteSon.sport()

上面是一個簡單的重寫例子,我們這里用到了繼承,通過創建rewrite父類,編寫了兩個函數分別實現不同的操作,rewriteSon子類繼承了父類上面的兩個方法,子類中又重新寫了相同名字的go方法,所以子類會把繼承過來父類中的go方法覆蓋掉,從而實現自己想要的操作,打印sport方法時會依舊得出繼承父類方法的操作,所以子類只重寫了go方法

總結

以上是生活随笔為你收集整理的js面向对象特征的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。