一,需要了解的知识点
构造函数
和普通函数是一样的,只是调用方式是不一样,
eg:
function Person(name,age){
this.name=name;
this.age=age;
this.say=function(){
return ("i am forever").join(this.age);
}
}
var person = new Person ("andy",18);//需要使用new关键字来调用 new Person();
Person ("andy",18);//普通函数的调用方式:直接调用 person()
构造函数的prototype属性
每个函数(对象)都会有prototype属性,该属相指向的便是原型对象;
Person.prototype.construct===Person //true
prototype等价于__proto__。 __proto__是社区提出来的,所以有些浏览器是不具有该属性的
原型对象
construct属性
对象的constructor属性用于返回创建该对象的函数,也就是我们常说的构造函数。
所以原型对象的constructor属性指向的是构造函数。
三者关系
实际生产中一般使用.getPrototypeOf()获取实例原型对象,__proto__,虽然很多浏览器提供了。单不建议生产环境下使用。
二,拓展运用,对于new关键字的理解。
1,创建一个空的对象。
var obj={}
2,链接该对象(即设置该对象的构造函数)到另一个对象。也就是把该空对象的原型指向构造函数的原型。
obj.__proto__=Object.prototype
3,将步骤1的新创建的对象作为this的上下文。
Person.call(person,args);//改变this上下文 js中使用call,apply
4,若构造函数中没有返回值或返回值是基本类型(Number、String、Boolean)的值,则返回新实例对象。
return person;//这里只有当构造函数没有返回值的时候才是返回新创建的对象。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。