2016-12-21 3 views
0

Новое в программировании ... Я пытаюсь узнать о наследовании объектов в JavaScript.__proto__ в скрипте приложений Google?

Я получаю сообщение об ошибке для следующего кода. Он говорит:

TypeError: Cannot find function getName in object [object Object]

ли __proto__ (так называемый "Dunder прото") не работает в App Script? Как я могу установить наследование для чего-то другого, кроме стандартного «Объекта» без него?

function onPlay(){ 

//create an employee constructor 
function Emp(last, first){ 
    this.first = first; 
    this.last = last; 
    this.getName = function() {return(this.first+this.last);} 
} 

//create an employee 
var emp1 = new Emp("Halpert", "Jim"); 

//log the employee's name 
Logger.log(emp1.getName()); 


//create a manager constructor 
function Mgr(){ 
    this.salary = 100,000; 
} 

//managers are also employees 
Mgr.__proto__ = Emp.prototype; 

//create a manager 
var mgr1 = new Mgr("Scott", "Michael"); 

//log the manager's name 
Logger.log(mgr1.getName()); 
} 
+0

Никогда не используйте '__proto__', это устарело! Кстати, вы хотели изменить цепочку прототипов 'Mgr.prototype' не конструктора' Mgr'. – Bergi

ответ

3

Вместо:

Mgr.__proto__ = Emp.prototype; 

Вы, вероятно, хотите:

Mgr.prototype = Object.create(Emp); 

Свойство __proto__ для изменяющих прототипов, и не обязательно во всех системах JavaScript. Чтобы установить прототип для вашего настраиваемого конструктора объектов, вы хотите установить объект prototype на функцию-конструктор экземпляру базового класса (с Object.create без необходимости использования родительского конструктора).

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