0
我有以下文件:Phantomjs Javascript繼承誤解
- run.js(運行整個腳本)
- animal.js(貓父抽象類)
- 動物/ cat.js(子類動物,關於這一點我想調用方法)
run.js
var cat = require('./animal/cat').create('Tom');
console.log(cat.petName);
console.log(cat.paws);
cat.voice();
個
animal.js
function animal(){
this.paws = 4;
}
exports.create = function(){
return new animal();
}
動物/ cat.js
function cat(name){
this.petName = name
}
cat.voice = function(){
console.log('myouu');
}
exports.create = function(name){
cat.prototype = require('../animal').create();
return new cat(name);
}
當我控制檯登錄貓類的屬性 - 一切都運行得很好。即時打印:
湯姆
這意味着貓尚未繼承動物。 但是,當涉及到調用該方法,會出現以下錯誤:
類型錯誤:「未定義」沒有(評估「cat.voice()」) run.js構造:4在全局代碼
我只是不能理解到底是什麼。任何人都可以解釋錯誤嗎?
這是否僅出現在PhantomJS中? – doldt
我通過exports.create使用PhantomJS的模塊繼承模式,它在瀏覽器環境中不可用 – Helvdan
@Helvdan:'exports.create'不是繼承模式。 PhantomJS繼承與瀏覽器相同。 'exports.create'和'require'與瀏覽器的'