编程新手...我正在尝试学习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
不必调用父构造函数)。