2015-05-26 50 views
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在全局代碼

我只是不能理解到底是什麼。任何人都可以解釋錯誤嗎?

+0

這是否僅出現在PhantomJS中? – doldt

+0

我通過exports.create使用PhantomJS的模塊繼承模式,它在瀏覽器環境中不可用 – Helvdan

+0

@Helvdan:'exports.create'不是繼承模式。 PhantomJS繼承與瀏覽器相同。 'exports.create'和'require'與瀏覽器的'