2014-01-10 34 views
0

在我的函數(x)中,我聲明瞭一個調用方法,它的原型,但這不是調用,而是我得到錯誤。JavaScript的原型 - 不叫它的父母

這裏是我的功能:

var x = function() { 
    console.log('i am called'); 
    this.y('child called'); // getting error 
} 

x.prototype.y = function(msg){ 
    console.log(msg); 
} 

x(); 

Live Demo

+5

['新的x()'](HTTPS://developer.mozilla .ORG/EN-US /文檔/網絡/的JavaScript /參考/運營/新)。構造函數不會(至少默認情況下)自己創建新的實例對象;他們只是在創建完成後才準備這些對象。 –

+0

我和@JonathanLonowski一起去看看[this](http://jsfiddle.net/34eqK/3/) – DontVoteMeDown

+0

,謝謝。我今天錯了。 – 3gwebtrain

回答

1

能否請您試試這個...... LINK

var x = function() { 
    alert('i am called'); 
    this.y('child called'); 
} 

x.prototype.y = function(msg){ 
    alert(msg); 
} 

new x(); 
0

這是因爲在JavaScript中, 「本」 是指給該函數的所有者。在這種情況下,函數的所有者是全局作用域,它沒有函數y。 爲了解決這個問題,你就必須做這樣的事情:

var x = {}; 
x.prototype.myFunction = function() { 
    alert('i am called'); 
    this.y('child called'); 
} 

x.prototype.y = function(msg){ 
    console.log(msg); 
} 

x.prototype.myFunction(); 

這個解釋更加深入這裏:http://www.quirksmode.org/js/this.html