coffeescript を使用してプライベート メソッドを作成する方法を理解しようとしています。以下はコード例です
class builders
constructor: ->
// private method
call = =>
@priv2Method()
// privileged method
privLedgeMethod: =>
call()
// privileged method
priv2Method: =>
console.log("got it")
以下は、生成された JS コードです。
(関数() { var ビルダー、 __bind = function(fn, me){ return function(){ return fn.apply(me, 引数); }; }; ビルダー = (関数() { 変数呼び出し、 _これ = これ; 関数ビルダー() { this.priv2Method = __bind(this.priv2Method, this); this.privLedgeMethod = __bind(this.privLedgeMethod, this); } コール = 関数() { builders.priv2Method(); を返します。 }; builders.prototype.privLedgeMethod = function() { リターンコール(); }; builders.prototype.priv2Method = function() { return console.log("了解"); }; ビルダーを返します。 }).call(これ); }).call(これ);
関数定義に「太い矢印」を使用したことに注意してください。コードから得られなかったことがいくつかあります。
- _this 変数の用途は何ですか
- このコードを : (new builders()).privLedgeMethod() として実行すると、call メソッド内よりも priv2Method メソッドが見つかりません。builders オブジェクトは priv2Method をプロトタイプのプロパティとして表示しますが。
うまくいけば、誰かがここで光を当てることができます。