new的時候發生了什麼?
阿新 • • 發佈:2019-01-14
<script> const newFn = function (C, ...args) { /** * 建立物件,將其__proto__關聯到構造器的prototype * 設定原型 * 判斷返回值 * 輸出 * */ // const obj = Object.create(C.prototype); /* 等價於 */ const obj = { __proto__: C.prototype, }; const instance = C.apply(obj, args); if (instance && (typeof(instance) === 'object' || typeof(instance) === 'Function')) { return instance; } return obj; }; function Person(name) { this.name = name; } Person.prototype.logName = function () { console.log(this.name); }; const o = newFn(Person, '任先陽'); o.logName(); </script>