编程新手......我试图在JavaScript中学习对象继承。
我收到以下代码的错误。它说:
TypeError:在对象[object Object]
中找不到函数getName
__proto__
(又名" dunder proto")在App脚本中不起作用吗?如何将继承设置为默认值以外的其他内容" Object"没有它?
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 :(得分:3)
而不是:
Mgr.__proto__ = Emp.prototype;
你可能想要:
Mgr.prototype = Object.create(Emp);
__proto__
属性用于改变原型,并且并非在所有JavaScript引擎中都可用。要为自定义对象构造函数设置原型,您需要将构造函数上的prototype
对象设置为基类的实例(Object.create
不会不必要地调用父构造函数)。