web3.eth.extend
code:extend.js
web3.extend(methods)
web3.eth.extend(methods)
web3.shh.extend(methods)
web3.bzz.extend(methods)
...
web3 モジュールを拡張可能にします
注意
追加のフォーマット用関数として、 *.extend.formatters も使用可能です。
これは、入出力のフォーマットに使用することができます。
詳細はソースコードを確認してください。
パラメータ
methods - Object : 拡張オブジェクト。メソッドを記述するオブジェクトの配列。
property - String
オプショナル
モジュールに追加するプロパティの名前。
プロパティがセットされない場合、モジュールに直接追加されます。
methods - Array : メソッド記述の配列
name - String: 追加するメソッド名
call - String: RPCメソッド名
params - Number
オプショナル
この関数のパラメータ数
デフォルトは 0
inputFormatter - Array
オプショナル
メソッドの入力をフォーマットするために使用可能
inputformatter 関数の配列
それぞれの配列の要素は、パラメータに対応
フォーマットされたくないパラメータがあれば、null をセット
outputFormatter - Function
オプショナル
メソッドの出力をフォーマットするために使用可能
戻り値
Object : 拡張されたモジュール
サンプル
code:example.js
web3.extend({
property: 'myModule',
methods: [{
name: 'getBalance',
call: 'eth_getBalance',
params: 2,
outputFormatter: web3.utils.hexToNumberString
},{
name: 'getGasPriceSuperFunction',
call: 'eth_gasPriceSuper',
params: 2,
}]
});
web3.extend({
methods: [{
name: 'directCall',
call: 'eth_callForFun',
}]
});
console.log(web3);
Web3 {
myModule: {
getBalance: function(){},
getGasPriceSuperFunction: function(){}
},
directCall: function(){},
eth: Eth {...},
bzz: Bzz {...},
...
}
メモhideyoshi.icon
JSON RPC にあって、Web3.js にない機能をあとから追加できる機能、だと思います。
JSON RPC を任意に拡張して、それを後から Web3.js でも使えるようにする、といったほうがわかりやすいかな?
原文