3
シンプルな「要求」メカニズム(https://gist.github.com/1031869)を作成しました。このメカニズムでは、含まれているスクリプトがコンパイルされ、新しいコンテキストで実行されます。しかし、付属のスクリプトで関数を呼び出してthis
を渡すと、インクルードされたスクリプトにその中のプロパティは表示されません。v8新しいコンテキストでコンパイルされたスクリプトからプロパティにアクセスできない
//required.js - compiled and run in new context
exports.logThis = function(what){
for (key in what) log(key + ' : ' + what[key]);
}
//main.js
logger = require('required');
this.someProp = {some: 'prop'}
logger.logThis({one: 'two'}); //works, prints 'one : two'
logger.logThis(this); //doesn't work, prints nothing. expected 'some : prop'
logger.logThis(this.someProp); //works, prints 'some : prop'
main.jsファイル内で 'logger.logThis(this);;ステートメントを呼び出すと何が表示されますか? – levu
logger.logこれはmain.jsから呼び出されたもので、何も表示されません。 main.jsに (key in this)log(key) を入力すると、(log関数やsomePropのような)これのプロパティが表示されます。 しかし、同じコードをrequired.jsで実行すると、何も印刷されません。 – Florin
これは奇妙なことですが、おそらくバグを報告しますか? – levu