构造函数创建对象
function Person(){
}
var person=new Person();
person.name='Keiven'
console.log(person.name)//Kevin
prototype
每个函数都有一个prototype 属性,
function Person(){}
Person.prototype.name='kevin'
var person1=new Person();
var person2=new Person()
console.log(person1.name)
console.log(person2.name)
函数的prototype 属性指向一个对象,这个对象就是调用该构造函数而创建的实例的原型。
proto
这个每个javascript 对象(除了null)都具有的一个属性,叫做proto,这个属性会指向该对象的原型
constructor
每个原型都有一个constructor属性指向光联的构造函数
function Person(){}
console.log(Person===Person.prototype.constructor);//true
实例与原型
读取实例的属性,如果找不到,就会查找与对象关联的原型中的属性如果还查不到,就去找原型的原型,一直找到最顶层为止
function Person(){}
Person.prototype.name='kevin'
var person=new Person()
person.name='Daisy'
console.log(person.name)//Daisy
delete person.name;
console.log(person.name)//kevin
原型的原型
原型也是一个对象。最原始的方式创建它
var obj=new Object()
obj.name='Kevin';
console.log(obj.name)//Kevin
原型对象就是通过Object 构造函数生成吗,实例的 _proto 指向构造函数prototype
原型链
那么Object.prototype的原型呢
console.log(Object.prototype._proto_===null)//true
所以null