2012-12-18 39 views
1

我遇到了JavaScript的問題。我有一個類似於我在項目中使用的代碼的小代碼片段。我寫了一個小代碼示例,我也遇到了麻煩。我想知道我在做什麼我的Javascript錯誤,所以我的代碼將工作。JavaScript操作系統的幫助

function Person(name) { 
    this.name = name; 
} 

Person.prototype.Display = {}; 

Display.prototype.text = function(str) { 
    document.write(str + '<br />'); 
    window.alert(str); 
}; 

var Jacob = new Person('Jacob'); 

Jacob.Display.text('Hello World!'); 

這個小代碼示例應該顯示文本hello world。我遇到的麻煩是行"Jacob.Display.Text('Hello World!');"不起作用。

+1

我會猜測Display.prototype.text會給出某種「未定義」或「不是函數」異常。 –

+0

@RichardJPLeGuen是正確的。你的瀏覽器有一個JavaScript控制檯;我建議看看那裏顯示的錯誤。 –

+0

另外,你不應該在頁面加載後使用document.write! – epascarello

回答

1

我想你的意思是這樣的:

function Person(name) { 
    this.name = name; 
} 

Person.prototype.display = { 
    text : function(str) { 
     document.write(str + '<br />'); 
     window.alert(str); 
    } 
}; 

var Jacob = new Person('Jacob'); 
Jacob.display.text('Hello World!'); 

(還要注意在「顯示」小寫字母「d」;離開大寫首字母構造函數)

+0

如果我想從外部向顯示對象添加屬性和方法,代碼是Display.prototype。*? – JaPerk14

+0

沒有'Display.prototype',只是'Person.prototype.display'。所以'Person.prototype.display.foo = function(){return'bar';}'。 – bfavaretto

+0

好的。謝謝,我想我明白了。 – JaPerk14

0

我不知道你到底是什麼試圖做,但這可能更接近你想要的。

function Person(name) { 
    this.name = name; 
    this.element = document.createElement('div'); 
    document.body.appendChild(this.element); 
} 

Person.prototype.display = function(str) { 
    this.element.textContent = str; 
    console.log(this.name + ' set to ' + str); 
}; 

var jacob = new Person('Jacob'); 

jacob.display('Hello World!');