Javascript 模拟 new
Posted lastnigtic
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Javascript 模拟 new相关的知识,希望对你有一定的参考价值。
一、开始
同样我们先来看看new操作符为我们做了什么事情:
function Person(name, sex){ this.hobby = \'shopping\'; this.name = name; this.sex = sex; this.sayName = function(){ console.log(this.name) }; } Person.weight = \'60kg\'; Person.prototype.friend = \'rose\'; var person = new Person(\'jack\',\'age\'); person.sayName();
输出是:
可以看到原型链的对象被继承下来了,定义在方法外的属性没有被继承下了,返回了一个新对象,可以传递参数
二、实现模拟
我们要做的是,返回一个新对象,吧原型链指向构造函数,传递参数
function Create(){ var obj = {}; var Constructor = [].shift.call(arguments); obj.__proto__ = Constructor.prototype; Constructor.apply(obj,arguments); return obj; }; var person = Create(Person,\'jack\',\'age\'); person.sayName();
其实很多东西只要是知道了干什么的,再去实现起来就很有思路了
以上是关于Javascript 模拟 new的主要内容,如果未能解决你的问题,请参考以下文章
VSCode自定义代码片段12——JavaScript的Promise对象
VSCode自定义代码片段12——JavaScript的Promise对象
RuntimeError: An attempt has been made to start a new process before the current process has...(代码片段