;(function() { // 实例化一个对象的过程 // 声明一个构造函数 var F2E = function() { this.fullName = "front end engineer", this.work = function() { return "write JavaScript、HTML、CSS" } }; // 定义prototype扩展方法 F2E.prototype = { constructor: F2E, getName: function() { return this.fullName } }; // 实例化一个F2E var hoogle = new F2E(); // 通过new实例化时的实际执行过程 var hoogle = function() { // 使用对象字面量形式创建一个新的对象 var hoogle = {}; // 将原型指针指向构造函数的原型对象 hoogle.__proto__ = F2E.prototype; // 将F2E上的静态属性赋给hoogle,并传入参数 F2E.apply(hoogle, arguments); // 返回该对象的引用 return hoogle }; }());