成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

JavaScript反射機(jī)制與繼承:概念

阿羅 / 607人閱讀

摘要:反射反射機(jī)制是指程序可以訪問(wèn)檢測(cè)和修改它本身狀態(tài)或行為的一種能力??梢岳梅瓷錂C(jī)制繼承。中沒(méi)有繼承機(jī)制,但是可以對(duì)某一個(gè)類(lèi)的成員通過(guò)反射機(jī)制逐一復(fù)制,然后再修改需要覆蓋的成員,就可以達(dá)到繼承的效果。

反射

反射機(jī)制是指程序可以訪問(wèn)、檢測(cè)和修改它本身狀態(tài)或行為的一種能力。對(duì)于JavaScript,簡(jiǎn)單來(lái)說(shuō),就是對(duì)類(lèi)的成員進(jìn)行修改等操作。

js可以通過(guò)for(...in...)來(lái)實(shí)現(xiàn)反射。

繼承

JavaScript中沒(méi)有專(zhuān)門(mén)的機(jī)制來(lái)實(shí)現(xiàn)類(lèi)的繼承,但可以通過(guò)復(fù)制一個(gè)類(lèi)的prototype到另外一個(gè)類(lèi)來(lái)實(shí)現(xiàn)繼承。

function Helloclass()
{
     //構(gòu)造函數(shù)
}
function Hellosubclass()
{
     //構(gòu)造函數(shù)
}

Hellosubclass.prototype = Helloclass.prototype;
Hellosubclass.prototype.Propertys = "name";
Hellosubclass.prototype.Methods = function()
{
     //方法示例代碼
}
var obj = new Hellosubclass();

以上并非嚴(yán)格的繼承,兩個(gè)類(lèi)是同一prototype的引用,HelloclassHellosubclass共享同一個(gè)prototype,重寫(xiě)一個(gè)類(lèi)的成員或方法會(huì)影響另一個(gè)。

可以利用反射機(jī)制繼承。利用for(...in...)語(yǔ)句枚舉出所有基類(lèi)prototype成員,并將其賦值給prototype對(duì)象。進(jìn)一步,可以為每個(gè)類(lèi)添加一個(gè)共有的方法用來(lái)實(shí)現(xiàn)類(lèi)的繼承:

function.prototype.inherit=function(baseClass)
{
     for(var p in baseClass.prototype)
     {
          this.prototype[p] = baseClass.prototype[p];
     }
}

可以看出,所謂的反射機(jī)制,從簡(jiǎn)單方面來(lái)講,就是對(duì)類(lèi)中成員進(jìn)行枚舉、修改等操作的能力。如果存在一種機(jī)制,在不知道某一個(gè)類(lèi)中到底有什么函數(shù),或者成員變量的情況下就可以對(duì)其操作(例如,js可以對(duì)類(lèi)成員進(jìn)行枚舉),這種機(jī)制就可以成為反射。
js中沒(méi)有繼承機(jī)制,但是可以對(duì)某一個(gè)類(lèi)的成員通過(guò)反射機(jī)制“逐一復(fù)制”,然后再修改需要“覆蓋”的成員,就可以達(dá)到“繼承”的效果。這也是反射機(jī)制的一個(gè)應(yīng)用。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/87564.html

相關(guān)文章

  • PHP核心技術(shù)最佳實(shí)踐(第一章 面向?qū)ο笏枷氲暮诵?em>概念)

    摘要:現(xiàn)代的面向?qū)ο蟮乃枷氩粡?qiáng)調(diào)為真實(shí)世界建模變得更加理性化一些,把目標(biāo)放在解耦上。各種語(yǔ)言中的多態(tài)多態(tài)確切的含義是同一類(lèi)的對(duì)象收到相同消息時(shí),會(huì)得到不同的結(jié)果。小結(jié)本章主要介紹面向?qū)ο笏枷氲某绦虻慕M成元素類(lèi)和對(duì)象。 第一章 面向?qū)ο笏枷氲暮诵母拍?showImg(https://segmentfault.com/img/bVNfjM?w=673&h=334); showImg(https:...

    dreamGong 評(píng)論0 收藏0
  • 最最最常見(jiàn)的Java面試題總結(jié)——第二周

    摘要:與都繼承自類(lèi),在中也是使用字符數(shù)組保存字符串,,這兩種對(duì)象都是可變的。采用字節(jié)碼的好處語(yǔ)言通過(guò)字節(jié)碼的方式,在一定程度上解決了傳統(tǒng)解釋型語(yǔ)言執(zhí)行效率低的問(wèn)題,同時(shí)又保留了解釋型語(yǔ)言可移植的特點(diǎn)。 String和StringBuffer、StringBuilder的區(qū)別是什么?String為什么是不可變的? String和StringBuffer、StringBuilder的區(qū)別 可變性...

    yearsj 評(píng)論0 收藏0
  • Java開(kāi)發(fā)

    摘要:大多數(shù)待遇豐厚的開(kāi)發(fā)職位都要求開(kāi)發(fā)者精通多線程技術(shù)并且有豐富的程序開(kāi)發(fā)調(diào)試優(yōu)化經(jīng)驗(yàn),所以線程相關(guān)的問(wèn)題在面試中經(jīng)常會(huì)被提到。將對(duì)象編碼為字節(jié)流稱(chēng)之為序列化,反之將字節(jié)流重建成對(duì)象稱(chēng)之為反序列化。 JVM 內(nèi)存溢出實(shí)例 - 實(shí)戰(zhàn) JVM(二) 介紹 JVM 內(nèi)存溢出產(chǎn)生情況分析 Java - 注解詳解 詳細(xì)介紹 Java 注解的使用,有利于學(xué)習(xí)編譯時(shí)注解 Java 程序員快速上手 Kot...

    LuDongWei 評(píng)論0 收藏0
  • 夯實(shí)基礎(chǔ)系列一:Java 基礎(chǔ)總結(jié)

    摘要:可實(shí)現(xiàn)單例模式代碼塊初始化靜態(tài)變量,只被執(zhí)行一次內(nèi)部類(lèi)不能與外部類(lèi)重名,只能訪問(wèn)外部類(lèi)靜態(tài)數(shù)據(jù)包括私有多分支選擇整型或字符類(lèi)型變量或整數(shù)表達(dá)式開(kāi)始支持。 前言 大學(xué)期間接觸 Java 的時(shí)間也不短了,不論學(xué)習(xí)還是實(shí)習(xí),都讓我發(fā)覺(jué)基礎(chǔ)的重要性?;ヂ?lián)網(wǎng)發(fā)展太快了,各種框架各種技術(shù)更新迭代的速度非???,可能你剛好掌握了一門(mén)技術(shù)的應(yīng)用,它卻已經(jīng)走在淘汰的邊緣了。 而學(xué)習(xí)新技術(shù)總要付出一定的時(shí)間...

    greatwhole 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<