实现一个new操作符
Posted 沐浴点阳光
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了实现一个new操作符相关的知识,希望对你有一定的参考价值。
new 操作符做了这些事:
1.它创建了一个全新的对象;
2.它会被执行[[Prototype]](也就是__proto__)链接;
3.它使this指向新创建的对象;
4.通过new创建的每个对象最终被[[Prototype]]链接到这个函数的prototype对象上;
5.如果函数没有返回对象类型Object(包含Function, Array, Date, RegExg, Error),那么new 表达式中的函数调用将返回该对象引用。
function New(func) { var res = {}; if (func.prototype !== null) { res.__proto__ = func.prototype; } var ret = func.apply(res, Array.prototype.slice.call(arguments, 1)); if ((typeof ret === ‘object‘ || typeof ret === ‘function‘) && ret !== null) { return ret; } return res; } var obj = New(A, 1, 2); // equals to var obj = new A(1, 2);
转自:实现一个new操作符
以上是关于实现一个new操作符的主要内容,如果未能解决你的问题,请参考以下文章
RuntimeError: An attempt has been made to start a new process before the current process has...(代码片段
VSCode自定义代码片段15——git命令操作一个完整流程