Javascript的new Function()干了什么

589 阅读1分钟

js中的对象

js中的创建一个对象的方法很奇怪,比如我有一个Person的函数,创建一个person对象的方法竟然是new Person()函数。而其他oop语言都是用类来实例化,比如有个Person的类,再去new Person() js是new 一个函数。

内部干了什么

假如我有一个 Person 函数如下,我要实例化一个person对象,在js中就是new Person()

function  Person() {
  this.age=1
}

其实new Person()里面干了下面几件事情

创建一个空的js对象

var obj=new Object();

把空对象的原型链上级设置成Person的原型函数

obj.__proto__ = Person.prototype;

更换this调用

这段的作用是把age属性添加到obj对象上。这样。obj就有了Person函数里的属性。

Person.call(obj);

返回obj

return obj

这样.一个js的对象就创建完成了。