这和原型javascript

时间:2010-11-30 15:33:00

标签: javascript

为什么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);

5 个答案:

答案 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检查)。

Prototype drawing

图片来自上述网址。

答案 3 :(得分:0)

FF和chrome可以为您提供__proto__中的父对象,可以使用d.__proto__

进行访问

答案 4 :(得分:-1)

你不应该使用Dog.prototype = new Animal(); 请尝试:Dog.prototype = Animal;