引言
javascript中new 实例化一个构造函数到底干了什么,为什么要实例化构造函数
new 做了什么事
- 1.创建一个新的对象
- 2.设置新对象的constructor属性为构造函数的名称
- 3.对象的__proto__属性指向构造函数的prototype对象
- 4.使用新对象调用函数,函数中的this被指向新实例对象
- 5.返回这个新的对象
为什么要new实例化,意义所在
在JS中是没有“类”这个概念的,而是用构造函数来作为对象模版的,比如人类(是一个对象的模板)分为男人女人(实物的共同特征)他她们都有人类的共同特性,都继承了人类的属性。意义,1.可以重复使这个实例化这个构造函数以及使用;2.实现继承
自己封装New()函数
function New(){
//创建一个新对象
var obj=new Object();
//取得该方法的第一个参数(并删除第一个参数),该参数是构造函数
var Constructor = [].shift.call(arguments);
//对象的__proto__属性指向构造函数的prototype对象
obj.__proto__ = Constructor.prototype;
//使用apply,将构造函数中的this指向新对象,这样新对象就可以访问构造函数中的属性和方法
Constructor.apply(obj,arguments);
//返回一个对象
return obj;
}
//应用
function test(name){
this.name = name
}
var Test1 = New(test,'js')
//等价于
var Test2 = new test('js')
寄语:坚持是一件幸福的事情