以前一直没彻底弄清楚js原型链和继承,有时候是本身的理解,有时候靠死记;最近要回头看看js的基础,顺便记录一些内容。摘抄于阮一峰大神;若是想好好复习一下js基础内容,戳这里https://wangdoc.com/javascrip...javascript
1.建立一个空对象,做为将要返回的对象实例.
2.将这个空对象的原型,指向构造函数的prototype属性。
3.将这个空对象赋值给函数内部的this关键字。
4.开始执行构造函数内部的代码html
也就是说,构造函数内部,this指的是一个新生成的空对象,全部针对this的操做,都会发生在这个空对象上。构造函数之因此叫“构造函数”,就是说这个函数的目的,就是操做一个空对象(即this对象),将其“构造”为须要的样子。java
若是构造函数内部有return语句,并且return后面跟着一个对象,new命令会返回return语句指定的对象;不然,就会无论return语句,返回this对象。数组
var Vehicle = function () { this.price = 1000; return 1000; }; (new Vehicle()) === 1000 // false
function _new(/* 构造函数 */ constructor, /* 构造函数参数 */ params) { // 将 arguments 对象转为数组 var args = [].slice.call(arguments); // 取出构造函数 var constructor = args.shift(); // 建立一个空对象,继承构造函数的 prototype 属性 var context = Object.create(constructor.prototype); // 执行构造函数 var result = constructor.apply(context, args); // 若是返回结果是对象,就直接返回,不然返回 context 对象 return (typeof result === 'object' && result != null) ? result : context; } // 实例 var actor = _new(Person, '张三', 28);