_Goproto__在Google App脚本中?

时间:2016-12-21 04:30:31

标签: javascript google-apps-script

编程新手......我试图在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());  
}

1 个答案:

答案 0 :(得分:3)

而不是:

Mgr.__proto__ = Emp.prototype;

你可能想要:

Mgr.prototype = Object.create(Emp);

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