编程新手...我正在尝试学习JavaScript中的对象继承。

我收到以下代码的错误。它说:


  TypeError:在对象[object Object]中找不到函数getName


__proto__(又名“ dunder proto”)在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());
}

最佳答案

而不是:

Mgr.__proto__ = Emp.prototype;


您可能想要:

Mgr.prototype = Object.create(Emp);


__proto__属性用于使原型变异,并且不一定在所有JavaScript引擎中都可用。要为您的自定义对象构造函数设置原型,您需要将构造函数上的prototype对象设置为基类的实例(Object.create不必调用父构造函数)。

09-25 19:48