2013-03-24 71 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

相关问题