为什么alert(d.prototype)返回未定义的? prototyope不应该是animaL吗?
function Dog(){
}
function Animal(){
this.name = "name";
}
Dog.prototype = new Animal();
var d = new Dog();
alert(d.constructor);
alert(d.prototype);
alert(d.name);
答案 0 :(得分:3)
prototype
属性是构造函数的属性。它不是使用该构造函数创建的对象的属性。
在内部,任何对象都必须知道它的原型是什么,但它不会作为具有名称的属性公开。
在某些实现中,可能会给出一个奇怪的名称。在Firefox中,它被称为__proto__
,但显然你不能依赖于在任何其他浏览器中工作的那个。
http://www.packtpub.com/article/using-prototype-property-in-javascript
答案 1 :(得分:1)
d是一个实例,用于获取原型:
d.constructor.prototype;
答案 2 :(得分:0)
我认为http://mckoss.com/jscript/object.htm中的绘画描述了它(我自己永远记不起来了)。在Firefox中有一个引用原型的属性__proto__
,但除此之外,没有完成从实例到原型(除了用instanceof
检查)。
图片来自上述网址。
答案 3 :(得分:0)
FF和chrome可以为您提供__proto__
中的父对象,可以使用d.__proto__
答案 4 :(得分:-1)
你不应该使用Dog.prototype = new Animal();
请尝试:Dog.prototype = Animal;
。