MDN JavaScript指南中的“构造函数中的全局信息”,小查询
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了MDN JavaScript指南中的“构造函数中的全局信息”,小查询,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1746字,纯文字阅读大概需要3分钟。
内容图文
在MDN JavaScript指南中,在“Property inheritance revisited”部分下,它解释了属性继承的一些细微之处.
我特别感兴趣的是一个关于递增id的例子:
var idCounter = 1;
function Employee (name, dept) {
this.name = name || "";
this.dept = dept || "general";
this.id = idCounter++;
}
function Manager (name, dept, reports) {...}
Manager.prototype = new Employee;
function WorkerBee (name, dept, projs) {...}
WorkerBee.prototype = new Employee;
function Engineer (name, projs, mach) {...}
Engineer.prototype = new WorkerBee;
function SalesPerson (name, projs, quota) {...}
SalesPerson.prototype = new WorkerBee;
var mac = new Engineer("Wood, Mac");
基本上,它继续说这个的完整版本(每个构造函数都有一个’base’属性,也在原型链中调用它们上面的构造函数)将意味着mac.id将是5.
我知道每次创建一个Employee对象时,id值会增加1,但是在创建’mac’之前4次确实创建了一个Employee对象?
如果有人能够一步一步地给我这个过程,我将不胜感激.
解决方法:
使用new将调用构造函数.无论何时调用构造函数(通过new或通常的方式,(),call或apply),id都将递增.所以我们算一算:
Manager.prototype = new Employee; //1
//...
WorkerBee.prototype = new Employee; //2
到目前为止这是两个.如果你在代码下考虑这个重要的句子:
Further assume that the definitions omitted here have the
base
property and call the constructor above them in the prototype chain.
这基本上意味着代码中的{…}部分是这样的:
function Manager (name, dept, reports) {
Employee.apply(this, arguments);
}
This jsFiddle显示没有这些省略号的代码(最小实现).
所以这些都会调用Employee函数:
Engineer.prototype = new WorkerBee; //3
//...
SalesPerson.prototype = new WorkerBee; //4
//...
var mac = new Engineer("Wood, Mac"); //5
内容总结
以上是互联网集市为您收集整理的MDN JavaScript指南中的“构造函数中的全局信息”,小查询全部内容,希望文章能够帮你解决MDN JavaScript指南中的“构造函数中的全局信息”,小查询所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。