我使用d3.js很多,並且最近一直在思考他們的linearScale函數。如何使用可調用方法創建對象,但我也可以像函數一樣調用對象
它可以讓你做到這一點:
var x = d3.scaleLinear()
.domain([10, 130])
.range([0, 960]);
x(20); // 80
x(50); // 320
至於我可以告訴大家:
- X裝d3.scaleLinear的返回值()
- x是對象樣,因爲我們可以調用方法的'範圍'和'域'
- x也是函數式的,因爲我們可以稱它爲'x(20)'並得到返回值
我不需要知道任何關於d3如何實現這一點的具體內容,d3僅僅是讓我想到API的第一個例子,它允許我這樣做。
我有興趣在javascript中實現類似的東西,並希望知道最簡單形式的必要設計模式。
我曾試着尋找d3的源代碼,但有很多額外的功能,它分裂成多個文件 - 這使我很難找到我正在尋找的東西,尤其是當我不喜歡不知道那是什麼。任何幫助將非常感激。
_ 「X擁有d3.scaleLinear的)的返回值(」 _:不。 'x'實際上是無論'.range'返回。 – Cerbrus
@Cerbrus我想.range返回'this',因爲您可以按任意順序鏈接.domain和.range方法。 – Martha
你應該看看[JavaScript關閉](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Closures)。 –