可列舉屬性有什麼作用?用在什麼場景下,什麼業務下?
var god = }}
};var news = ;
},methods:
}};// 然後我們可以這樣訪問
god.extends('name',news);
god.name.methods.show();
看我們前面的**,god
是乙個母物件,意思就說我們協作開發,一般由專案組長或技術經理來開發god
這個類。
news
就是我們的業務物件,由我們的隊友來開發,一旦我們開發完成之後,我們只需要關注這個類有什麼資料,這些資料怎麼去呼叫。
我們的god
來進行適配,把這個news
物件整合到我們的業務中。
上面的**我就實現了,只要使用god.extends('name',news);
整合進來,我們就可以使用god.name
訪問原本news
物件定義的屬性或方法。
methods:
}
注意:news物件中,我們是使用this.id
獲取的news物件裡data()
中的資料。
我們知道如果你不作任何處理,是不能這樣使用的,現在能這樣使用是因為,我們在god
中通過object.assign()
方法作了處理。
god
裡面如果有一些屬性,比如version:'1.0'
,那麼如果我們在news
(子物件裡)如何通過以下**來得到呢?
alert(this.$global.version)
開始:
var god = }},
init();
keys.foreach((key)=>);
}};var
news = ;
},methods:
}};// 然後我們可以這樣訪問
分析:god
中定義了乙個init()
方法,完成屬性遍歷賦值給this.$global
。然後在extends()
裡呼叫,在object.assign()
的時候把this
也傳了進去。
這樣news
中就可以通過this.$global
拿到god
物件version
屬性的值。
剛才我們的舉動把母物件一些「子物件不能用或者不需要用的」屬性也給合併進去了。
怎麼解決,上**:
var god = }},
init());
object.defineproperty(this,'extends',);
var keys = object.keys(this); // 列舉出this當前是所有屬性
this.$global = {};
keys.foreach((key)=>);
}};var
news = ;
},methods:
}};// 然後我們可以這樣訪問
god.extends
('name',news);
god.name.methods.show
();
分析:我們通過object.defineproperty
來設定那些屬性不可列舉
// 把god物件的這2個屬性的enumerable設定為false
object.defineproperty(this,'init',);
object.defineproperty(this,'extends',);
上**我們把init
和extends
都設定了false。
我們測試看看:
只列印出version
。如果不寫:
列印出god
的所有子物件(屬性)。
裝飾器到底有啥用?
我們要增強乙個已經完成的函式的功能,比如,在now 函式呼叫前後自動列印日誌,但又不希望修改now 函式的定義,這種在 執行期間動態增加功能的方式,稱之為 裝飾器 decorator 本質上,decorator就是乙個返回函式的高階函式。def log func def args,kw print ...
MySQL唯讀事務到底有啥用?
很多人認為mysql唯讀事務沒啥用,有點雞肋,以前我也這麼認為,自從認真研究了事務的隔離級別和事務的併發問題後,發現這個唯讀事務其實並不是大家想象的那麼無用。下面舉乙個實際開發中可能會遇到的例子來說明唯讀事務的作用。展示使用者列表的需求,後台從資料庫查詢使用者列表返回給前端分頁展示,分頁通過資料庫的...
牛逼哄哄的 RabbitMQ 到底有啥用?
mq全稱為message queue,訊息佇列 mq 是一種應用程式對應用程式的通訊方法。應用程式通過讀寫出入佇列的訊息 針對應用程式的資料 來通訊,而無需專用連線來鏈結它們。訊息傳遞指的是程式之間通過在訊息中傳送資料進行通訊,而不是通過直接呼叫彼此來通訊,直接呼叫通常是用於諸如遠端過程呼叫的技術。...