zoukankan      html  css  js  c++  java
  • js基础:原型对象

    原型:prototype

    我们所创建的每一个函数,解析器都会向函数中添加一个属性prototype

    这个属性对应着一个对象,这个对象就是我们所谓的"原型对象"。

      function Person() {
    
      }
    console.log(Person.prototype)
    

    image-20211104103452303

    如果函数作为普通函数调用prototype没有任何作用。

    当函数以构造函数的形式调用时,它所创建的对象中都会有一个隐含的属性,指向该构造函数的原型对象。

    通过__proto__来访问该属性。

      function Person() {
    
      }
      console.log(Person.prototype)
      var person = new Person()
      console.log(person.__proto__)
      console.log(person.__proto__ === Person.prototype)
    

    image-20211104103647751

    原型对象就相当于一个公共区域,所有同一个类的实例都可以访问到这个原型对象。

    我们可以将对象中的共有内容,统一设置到原型对象中。

    当我们访问对象的一个属性或者方法时,它会先在对象自身中寻找,有则直接使用,没有则去原型对象中寻找。

      Person.prototype.fun = function () {
          console.log("Person fun")
      }
      Person.prototype.field = 123
      person.fun()
      console.log(person.field)
    

    image-20211104104153435

    以后我们创建构造函数时,可以将这些对象共有的属性和方法,统一添加到构造函数的原型对象中。

    我们可以使用"属性" in 对象来检查对象中是否有该属性,当当前对象没有,会向它的原型对象中去找,如果没有,会向原型对象的原型对象中找,直至找到最后。

    我们可以使用对象.hasOwnProperty("属性")来检查当前对象是否有该属性,不会向原型对象中去找

    console.log("field" in person)
    console.log(person.hasOwnProperty("field"))
    

    image-20211104104555955

    object对象的原型没有原型。

      console.log(person.__proto__)
      console.log(person.__proto__.__proto__)
      console.log(person.__proto__.__proto__.__proto__)
    

    image-20211104104952228

  • 相关阅读:
    linux MySQL安装指南
    Ubuntu MySQL常用命令
    linux下 mysql 忘记root用户密码解决办法
    ubuntu mysql 启动命令/配置my.cnf
    Ubuntu中给mysql添加新用户并分配权限
    各种 ADSL Modem 及路由器的端口映射方法
    (转)有关SharePoint页面定制的若干细节
    获取Excel中的Sheet的名称
    获取excel表单中的数据
    如何用Excel 2007同步MOSS列表(转)
  • 原文地址:https://www.cnblogs.com/wwjj4811/p/15507193.html
Copyright © 2011-2022 走看看