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的对象就创建完成了。