2013-09-02 6 views
0

Я очень смущен про прототипом в javascript.Прототип в 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' 

это не должно оповещать 'Animal' дважды?

ответ

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} 
+0

ОК теперь его предупреждение [объект Объект] его не следует предупреждать [объект Animal]? – user2738961

+0

Пожалуйста, проверьте jsfiddle, чтобы увидеть точный результат. Также имейте в виду, что при использовании предупреждения объект передается в строку. А в JavaScript все является объектом. – Krasimir

+0

@ Krasimir как насчет _TypeError: undefined не является объектом тогда? :) –

0

Вы должны использовать два подчеркивания:

alert(dog.__proto__); 

Пожалуйста, смотрите MDN doc для деталей. Также обратите внимание, что __proto__ нестандартно от (тока) ECMAScript 5.

0

alert называет toString() метод аргумента, который передается, так:

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

Использование console.log вместо alert для четкой отладки.

P.S .: и, да, это __proto__ вместо _proto_.

0

Вот лучший способ доступа к прототипу. Это стандартный способ.

Смежные вопросы