当我还是一个js初学者的时候总是忽视了new关键字的作用,也不理解new关键字在程序语言总取到的作用。只是知道js和其他语言一样也有new运算符。所以我想记录一下自己对new关键字的理解。
一、new应算符的经典应用
function Person(name,age){
this.name = name;
this.age = age;
};
Person.prototype.sayName = function(){
console.log(this.age)
}
var person = new Person("paul",24);//构造函数;
person.name;//paul
p1.sayName();//24
在这一过程中new做了哪些工作呢 ,我们继续来分解new的运行过程。
二、new运算符的执行过程
我们先看MDN给出的new运算符的解释和对应的上面例子的生产过程:
1.创建一个空的简单JavaScript对象(即{});
var person = {}
2.链接该对象(即设置该对象的构造函数)到另一个对象 ;
person._proto_= Person.protoype;//这里指新创建的空对象的原型指向构造函数的原型 即Person
3.将步骤1新创建的对象作为this的上下文 ;
Person.call(person,args);//改变this上下文 js中使用call,apply
4.如果该函数没有返回对象,则返回this。
return person;//这里只有当构造函数没有返回值的时候才是返回新创建的对象,有返回值的情况稍后继续分析。
自此,我们得到新的person对象,我们称之为构造函数的实例。
网友评论