摘要:反射反射機制是指程序可以訪問檢測和修改它本身狀態或行為的一種能力。可以利用反射機制繼承。中沒有繼承機制,但是可以對某一個類的成員通過反射機制逐一復制,然后再修改需要覆蓋的成員,就可以達到繼承的效果。
反射
反射機制是指程序可以訪問、檢測和修改它本身狀態或行為的一種能力。對于JavaScript,簡單來說,就是對類的成員進行修改等操作。
js可以通過for(...in...)來實現反射。
繼承JavaScript中沒有專門的機制來實現類的繼承,但可以通過復制一個類的prototype到另外一個類來實現繼承。
function Helloclass() { //構造函數 } function Hellosubclass() { //構造函數 } Hellosubclass.prototype = Helloclass.prototype; Hellosubclass.prototype.Propertys = "name"; Hellosubclass.prototype.Methods = function() { //方法示例代碼 } var obj = new Hellosubclass();
以上并非嚴格的繼承,兩個類是同一prototype的引用,Helloclass與Hellosubclass共享同一個prototype,重寫一個類的成員或方法會影響另一個。
可以利用反射機制繼承。利用for(...in...)語句枚舉出所有基類prototype成員,并將其賦值給prototype對象。進一步,可以為每個類添加一個共有的方法用來實現類的繼承:
function.prototype.inherit=function(baseClass) { for(var p in baseClass.prototype) { this.prototype[p] = baseClass.prototype[p]; } }
可以看出,所謂的反射機制,從簡單方面來講,就是對類中成員進行枚舉、修改等操作的能力。如果存在一種機制,在不知道某一個類中到底有什么函數,或者成員變量的情況下就可以對其操作(例如,js可以對類成員進行枚舉),這種機制就可以成為反射。
js中沒有繼承機制,但是可以對某一個類的成員通過反射機制“逐一復制”,然后再修改需要“覆蓋”的成員,就可以達到“繼承”的效果。這也是反射機制的一個應用。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/87564.html
摘要:現代的面向對象的思想不強調為真實世界建模變得更加理性化一些,把目標放在解耦上。各種語言中的多態多態確切的含義是同一類的對象收到相同消息時,會得到不同的結果。小結本章主要介紹面向對象思想的程序的組成元素類和對象。 第一章 面向對象思想的核心概念 showImg(https://segmentfault.com/img/bVNfjM?w=673&h=334); showImg(https:...
摘要:與都繼承自類,在中也是使用字符數組保存字符串,,這兩種對象都是可變的。采用字節碼的好處語言通過字節碼的方式,在一定程度上解決了傳統解釋型語言執行效率低的問題,同時又保留了解釋型語言可移植的特點。 String和StringBuffer、StringBuilder的區別是什么?String為什么是不可變的? String和StringBuffer、StringBuilder的區別 可變性...
摘要:可實現單例模式代碼塊初始化靜態變量,只被執行一次內部類不能與外部類重名,只能訪問外部類靜態數據包括私有多分支選擇整型或字符類型變量或整數表達式開始支持。 前言 大學期間接觸 Java 的時間也不短了,不論學習還是實習,都讓我發覺基礎的重要性。互聯網發展太快了,各種框架各種技術更新迭代的速度非常快,可能你剛好掌握了一門技術的應用,它卻已經走在淘汰的邊緣了。 而學習新技術總要付出一定的時間...
閱讀 3178·2021-11-22 15:25
閱讀 3855·2021-11-17 09:33
閱讀 3370·2021-11-08 13:15
閱讀 3052·2021-09-22 10:56
閱讀 542·2021-08-31 09:45
閱讀 2755·2019-08-30 13:49
閱讀 3082·2019-08-30 12:52
閱讀 1146·2019-08-29 17:05