javascript中的原型无法正常工作

Prototype in javascript not working as excepted

本文关键字:常工作 工作 原型 javascript      更新时间:2023-09-26

我对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'

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

您应该使用

dog.__proto__

不是

dog._proto_

Js出价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 fiddle中的输出是

Animal {name: undefined}
Animal {name: undefined} 

您应该使用两个下划线:

alert(dog.__proto__);

有关详细信息,请参阅MDN文档。还要注意,__proto__在(当前)ECMAScript 5中是非标准的。

alert调用参数的toString()方法,即:

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

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

附言:是的,它是__proto__而不是_proto_

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

dog.constructor.prototype