前言
原型创建对象是基于构造函数创建对象来的,就是为了解决构造函数创建对象的缺点(重复造车轮,浪费内存)。
构造函数有prototype属性(一个指针),他指向一个新的区域,这个新的区域用来存放属性和实例方法,实例对象可以共享这些方法和属性,需要的时候就调用。
内置对象(Array)和构造函数的比较
var arry = new Array(23,"dwdw");
console.dir(Array);
console.dir(arry);
function Person(name,age){
this.name = name;
this.age = age;
}
Person.prototype.eat = function(){
console.log("wochile");
}
console.dir(Person);
var per1 = new Person("hah",23);
console.log(per1);
看起来一样, 我觉得我通过构造函数结合原型创建出来的对象已经可以和系统内置的对象媲美了。
怎样理解构造函数,实例对象,原型之间的关系
Person-------构造函数
Person prototype---------原型
person1&&person2--------实例对象
构造函数的prototype指向原型,实例对象的__proto__([[prototype]])指向原型。(Person.prototype==person1.__proto__)
原型和实例对象的构造函数都是构造函数。
把必须的放到构造函数中,到一些非必要的属性和方法放到原型中,需要的时候在拿出来用。