2013-03-24 68 views
1

財產我收到以下錯誤無法獲取的未定義或空引用

無法獲取的未定義或空引用

財產「showMsg」對下面的代碼的最後一行:

Function.prototype.showMsg = function() { 
     alert("This is a sample message."); 
    }; 

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

    var personObj = new Person(); 
    personObj.prototype.showMsg(); 

其實我應該能夠從Person實例訪問showMsg(),因爲我已經把它添加到Function.prototype。那爲什麼我得到這個錯誤?

+0

'prototype'是構造函數,而不是構造的對象 – 2013-03-24 12:11:08

+0

哦這就是有趣,所以我怎麼能實現類似的? – Mahesha999 2013-03-24 12:13:59

回答

1

嗯,你明白這一切錯誤

Function.prototype.showMsg = function() { 
    alert("This is a sample message."); 
}; 

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

var personObj = new Person(); 
personObj.prototype.showMsg(); 

首先你原型的功能類,然後創建名爲Person的自定義類,然後創建Person的一個實例。然後,您呼叫的很藍印頁showMsg這是2個誤區1個showMsg是無界到人,然後打電話給它,如果它的邊界,你直接稱呼它

personObj.showMsg() 

意願,使這個腳本從我的觀點工作,如果我給你寫 寫像這樣 - >

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

Person.prototype.showMsg = function() { 
    alert("This is a sample message."); 
}; 

var personObj = new Person(); 
personObj.showMsg(); 

我的腳本綁定的showMsg直接Person類,如果你需要它通過Person對象,並通過功能類別爲則你必須從函數類繼承像這樣

Function.prototype.showMsg=function() { 
    alert("This is a sample message."); 
    }; 

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


Person.prototype = Function; 
Person.prototype.constructor = Person; 

var personObj = new Person(); 
personObj.showMsg(); 

問候

+0

**但是,那麼我怎樣才能使一個屬性或方法作爲所有函數和它們的實例的一部分出現?**我想我已經讀過'Function'在JavaScript中有點基類型,因此添加了任何屬性它的'prototype'將導致該屬性出現在所有函數及其實例之下。 – Mahesha999 2013-03-24 12:19:16

+0

不能因爲世界上的任何函數都有返回類型,即使你沒有在JavaScript中定義返回類型,默認情況下它是Undefined – Marwan 2013-03-24 12:22:35

相關問題