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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

一个JavaScript上的OOP编程技巧:继承

發(fā)布時間:2024/1/17 javascript 72 豆豆
生活随笔 收集整理的這篇文章主要介紹了 一个JavaScript上的OOP编程技巧:继承 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

其實這一次要說的東西是在很久以前就發(fā)現(xiàn)了的,在我知道博客園這個平臺以前也在一個現(xiàn)在已經(jīng)廢棄了的blog上發(fā)了出來,但是來了博客園以后很長時間內(nèi)我都苦于不知道怎么樣寫文章來講解比較好……

今天正好睡不著,就索性地來次隨性地發(fā)揮吧,反正每次都很正經(jīng)地去說一件事情也是很累的……

?

在探索我馬上要介紹的這種技巧之前,我也見過一些文章介紹如何在JavaScript中實現(xiàn)類的繼承。但是,我總是覺得這些文章中好像是欠缺了點什么,帶著這種缺憾的感覺我就開始了并不算太認真的JavaScript——老實說,我更希望大家能用“ECMAScript”來稱呼它——探索旅程。

后來,我發(fā)現(xiàn)了一個技巧——其實這個技巧很早以前就被道大師開發(fā)出來,并且已經(jīng)被用在了一些成熟的框架中了,但在我發(fā)現(xiàn)它的時候還很難找到文章去介紹它,大部分介紹JavaScript中的繼承的文章都是用那種又難看又buggy的方法……

?

?

好吧,也許你已經(jīng)不耐煩了:隨性也用不著說這么多廢話吧?

其實那些讓我有缺憾感的地方,其中之一就是instanceof運算符的結(jié)果。

?

舉個例子說,如果我們有這樣的一個構(gòu)造器:

function A(){ }

那么當我們進行這樣的測試的時候:

new A() instanceof A

我們得到的結(jié)果會是true。

?

但是,如果我們編寫一個構(gòu)造器B,用以前的文章所講解的這樣那樣的方法來繼承自A,那么進行下面這樣的測試得到的結(jié)果通常會是false:

new B() instanceof A

不過幸運的是,如果你看的是最近一年以內(nèi)的文章,多半會介紹這樣的一種方法:

function A(){ } function B(){ } B.prototype = new A; B.prototype.constructor = B;

經(jīng)過這樣的處理再進行new B instanceof A的測試,得到的結(jié)果就應該是true了。

?

可能你會問了:“哎!?那A的函數(shù)體里面要是有對對象的初始化操作呢?B的實例不就沒有這些初始化了嗎?”

嘿嘿嘿,其實只要再這樣改一下就可以了:

function B(){A.apply(this, arguments); }

怎么樣?今天你new B了嗎?

?

不過,到現(xiàn)在為止,new A和new B還是有一些缺憾,你能猜出來這次我說的缺憾是在哪嗎?

轉(zhuǎn)載于:https://www.cnblogs.com/NanaLich/archive/2010/05/20/javascript-inherit-make-instanceof-true.html

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎

總結(jié)

以上是生活随笔為你收集整理的一个JavaScript上的OOP编程技巧:继承的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。