美文网首页
javascript高级-01

javascript高级-01

作者: 路人_Ding | 来源:发表于2018-08-15 21:18 被阅读0次

一、原型
实例对象中有proto这个属性,叫原型,也是一个对象,这个属性是给浏览器使用,不是标准的属性----->proto----->可以叫原型对象
构造函数中有prototype这个属性,叫原型,也是一个对象,这个属性是给程序员使用,是标准的属性------>prototype--->可以叫原型对象

 实例对象的__proto__和构造函数中的prototype相等--->true
 又因为实例对象是通过构造函数来创建的,构造函数中有原型对象prototype
 实例对象的__proto__指向了构造函数的原型对象prototype

二、原型添加方法解决数据共享问题
1.通过原型来添加方法,解决数据共享,节省内存空间

function Person(name,age) {
  this.name=name;
  this.age=age;
}

//通过原型来添加方法,解决数据共享,节省内存空间

Person.prototype.eat=function () {
  console.log("吃凉菜");
}
var p1=new Person("小明",20);
var p2=new Person("小红",30);
console.log(p1.eat==p2.eat);//true
console.dir(p1);
console.dir(p2);

三、构造函数和实例对象和原型对象之间的关系
总结:三者的关系
构造函数可以实例化对象
构造函数中有一个属性叫prototype,是构造函数的原型对象
构造函数的原型对象(prototype)中有一个constructor构造器,这个构造器指向的就是自己所在的原型对象所在的构造函数
实例对象的原型对象(proto)指向的是该构造函数的原型对象
构造函数的原型对象(prototype)中的方法是可以被实例对象直接访问的

相关文章

网友评论

      本文标题:javascript高级-01

      本文链接:https://www.haomeiwen.com/subject/vblgbftx.html