0

我对javascript中的原型感到非常困惑。

我有这个代码:

  function Animal(name){
  this.name=name;}

  function Dog(nameA){
  this.legs=4;}

  Dog.prototype=new Animal();


 var dog=new Dog();
 alert(Object.getPrototypeOf(dog));
 alert '[object Object]'    

 alert(dog._proto_);
 //alert 'undefined'

它不应该两次提醒“动物”吗?

4

4 回答 4

0

这是访问原型的更好方法。这是一种标准方式。

dog.constructor.prototype
于 2013-09-02T08:18:33.313 回答
0

您应该使用两个下划线:

alert(dog.__proto__);

有关详细信息,请参阅MDN 文档。另请注意,__proto__从(当前)ECMAScript 5 开始,这是非标准的。

于 2013-09-02T07:41:11.520 回答
0

你应该使用

dog.__proto__

不是

dog._proto_

JsFiddle http://jsfiddle.net/gaE3y/

function Animal(name){
  this.name=name;}

  function Dog(nameA){
  this.legs=4;}

  Dog.prototype=new Animal();


 var dog=new Dog();
console.log(Object.getPrototypeOf(dog));
console.log(dog.__proto__);

js小提琴中的输出是

Animal {name: undefined}
Animal {name: undefined} 
于 2013-09-02T07:41:23.007 回答
0

alert调用toString()传递的参数的方法,因此:

var anyObject = {};
alert(anyObject); //[object Object]
console.log(anyObject); // Object {}
console.log(anyObject.toString()) //"[object Object]"

使用console.log而不是alert进行清晰的调试。

PS:而且,是的,它__proto__不是_proto_.

于 2013-09-02T07:55:41.323 回答