js原型初识

什么是原型?

原型本质上也是一个对象,其他对象可以继承它的对象中的属性
js对象中有一个隐藏属性[[prototype]],这个属性就指向了原型对象,当我们想要使用对象中的某个属性的时候,而对象中却没有就会使用原型对象中的属性.

   let man = {
     walk(){
        console.log(this.name)
      }
   }
   let zy = {
      name:"zy",
      __proto__:man  //在本例中man就是原型对象 __proto__作用是set get原型对象
   }

注意原型对象也是对象,因此原型对象中的[[prototype]]属性也是指向一个原型对象

   man.__proto__ //Object
   man.__proto__.__proto__ //null  Object的原型属性指向的是null

为什么要原型?
可以使我们少写点代码,代码结构上看着比较好,占用的内存也少

构造函数中的原型

在我们调用构造函数的时候,构造函数会为我们新建的对象中的[[prototype]]赋值(原型对象)

   function Man(name){
      this.name = name
   }
   let zy = new Man('zy')
   zy.__proto__ //{constructor:Man(name)}
   Man.prototype //{constructor:Man(name)}
   //也就是说Man的prototype属性和zy的__proto__属性指向的是一个原型对象
   //可以通过向Man.prototype中添加值 然后zy对象也会能够获取到这些值
   Man.prototype.eat = function(food){
     return `${this.name} like ${food} `
   }
   

内置对象中的原型

小朋友你是否有很多疑问为什么原始值可以调用方法例如 ‘hello’.slice(0),这个过程略微有点繁琐.首先js引擎会将’hello’转化为对象 new String(‘hello’) 那么这个对象中又没有slice方法,别急…这个对象是由function String(){} 构造的 这个对象中有String.prototype.slice方法,因此我们的’hello’小可爱可以通过__proto__去自动的获得slice()方法.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值