0
ライブラリにフィーチャを追加するために関数をプロトタイプに追加したいと考えています。 プロトタイプの「この」コンテキストにどのようにアクセスできますか? 私はあなたに私が意味するものを説明するための例を挙げます。Javascript:関数を追加するときにプロトタイプコンテキストにアクセスする
// file a
import * as utils from './utils'
import Validation from './b'
Validation.prototype.unique = function(url, params) {
if (!utils.isEmptyString(url) && !utils.isEmptyObject(params) {
// make api call for testing if unique
this._messages.push('Unique'); // <= I would like to access to "this" context of Validation in file b.
}
return this;
}
// file b
import * as utils from './utils'
export function Validation() {
this._messages = [];
this._value = undefined;
//...
}
Validation.prototype.required = function() {
if (!utils.isEmpty(this._value)) {
this._messages.push('Required);
}
return this;
}
を使用しますか。あなたの関数が定義されたファイルはまったく重要ではありません。 'this'はcallsiteによって渡されたばかりです。 – SLaks
サイドノート: "this"の値を参照するために "context"という用語を使用する人がいるかもしれませんが、 "context"(仕様で定義されている)と "this"はone- 。 「これはちょうど「これ」です。 :-) –
'Validation.prototype.unique'が「正しく」呼び出された場合、つまり' Validation'インスタンスのメソッドを持つ場合、 'this'はそのインスタンスを参照するだけです。 * "私は"この "ファイルbのコンテキスト"にアクセスしたいです*あなたが望むものとは思えません;) –