猿问

为什么在构造函数的prototype中添加的属性不能被构造函数使用?

代码如下:
javascriptfunctionFoo(){};
Foo.prototype.talk=function(){
alert('hello~\n');
};
vara=newFoo;
a.talk();//输出'hello~\n'
但是如果这样:
javascriptFoo.talk()//报错:Objectdoesn'tsupportpropertyormethod'talk'
Foo.prototype.talk()//没有问题
而且当我使用
javascript"talk"inFOO//返回false
但是如果查看
javascriptFoo.prototype
会发现talk属性的确已经被添加上去了。
非常不理解这种行为。
月关宝盒
浏览 351回答 2
2回答

largeQ

protorype是构造函数的一个属性,我们可以这样理解。假设定义一个对象.varobj={name:"Andy",alias:{nickname:"Tiger"}};我们要访问nickname这个obj的属性上的属性,需要这样访问:obj.alias.nickname;但是如果我们直接防范obj.nickname就会返回undefined//如果是一个方法,调用nickname就会报错。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答