【JS】面向对象- 原型 prototype

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
<script>
  /*
  * 原型 prototype
  * 定义: 每一个函数天生自带一个属性 prototype 是一个对象
  * 构造函数也有这个
  * 因为prototype也是对象,所以可以使用对象操作语法给里面添加内容
  * 对象
  * 定义:每一个对象,在你访问它成员的时候,如果自己没有这个属性,就会去所属构造函数的prototype(原型)上查找
  *
  * */
  function Person() {
      Person.prototype.sayHi=function () {
          console.log("我是prototype上的方法")
      }
      console.log(Person.prototype)
  }
  /*
  * 创建一个实例化对象
  * 因为p1是Person实例化出来的对象
  * p1是属于Person这个构造函数
  * 当你访问p1的sayHi成员的时候,p1没有
  * 就会自动去Person的prototype(原型)上找
  * */
  var p1=new Person()
  console.log(p1)
  p1.sayHi()

  var p2=new Person()
  console.log(p2)
  p2.sayHi()
/*
* 只需要在Person的原型上添加一些方法
* 所有的Person的每一个实例都可以使用,不会造成空间浪费
* */
  console.log(p1.sayHi()===p2.sayHi())//true
</script>
</body>
</html>

 

posted @ 2022-07-20 11:59  木子欢儿  阅读(14)  评论(0编辑  收藏  举报