ファイルにオブジェクトがあり、そのファイルを要求して、気まぐれにオブジェクトの新しいインスタンスを作成できるようにしたいのですが、問題が発生しました。これは信じられないほど基本的なようですが、何が欠けていますか。
帽子.js
function Hat(owner) {
this.owner = owner;
}
Hat.prototype.tip = function() {
console.log("and he (" + owner + ") tipped his hat, just like this");
}
exports.Hat = Hat;
ノード端末
試行 1
> require('./hat.js');
> var mighty_duck = new Hat('Emilio');
ReferenceError: Hat is not defined
試行 2
> var Hat = require('./hat.js');
> var mighty_duck = new Hat('Emilio');
{ owner: 'Emilio' }
> mighty_duck.tip();
TypeError: Object #<Hat> has no method 'tip'
編集
私は、最も残念なことに、最大の問題であることが判明したものを省略しました。使おうとしていたという事実
util.inherits(Hat, EventEmitter);
したがって、私のhat.jsは実際には
function Hat(owner) {
this.owner = owner;
}
Hat.prototype.tip = function() {
console.log("and he (" + owner + ") tipped his hat, just like this");
}
util.inherits(Hat, EventEmitter);
exports.Hat = Hat;
プロトタイプの拡張を開始する前に呼び出しを行うことが重要であるため、これは問題です。修正は簡単です。呼び出しを数行上に移動しますinherits
inherits
function Hat(owner) {
this.owner = owner;
}
util.inherits(Hat, EventEmitter);
Hat.prototype.tip = function() {
console.log("and he (" + owner + ") tipped his hat, just like this");
}
exports.Hat = Hat;