zoukankan      html  css  js  c++  java
  • constructor prototype __proto__

    什么是对象
    若干属性的集合

    什么是原型?
    原型是一个对象,其他对象可以通过它实现继承。

    哪些对象有原型?
    所有的对象在默认情况下都有一个原型,因为原型本身也是对象,所以每个原型自身又有一个原型(只有一种例外,默认的对象原型在原型链的顶端)

    任何一个对象都可以成为原型


     function Person(name){
            this.name=name;
        }
    Person.prototype.sayName=function(){
        console.log(this.name);
    }
        
    var person=new Person("xl");
    
    1. prototype : prototype是每个 函数对象 都具有的属性,被称为原型对象。

    2. constructor始终 指向创建当前对象的构造函数
      任何一个对象都有constructor属性

      1. 如果我们重写这个Person.prototype属性,那么constructor属性的指向就会发生改变了。
      Person.prototype={
          sayName:function(){
              console.log(this.name);
          }
      }
      
      console.log(Person.prototype.constructor);// 输出 function Object(){}  
      //这里为什么会输出function Object(){}
      //还记得之前说过constructor属性始终指向创建这个对象的构造函数吗?
      
      //这里实际上是对原型对象的重写:
      Person.prototype = new Object(){
          sayName:function(){
              console.log(this.name);
          }
      }
      //看到了吧。现在Person.prototype.constructor属性实际上是指向Object的。
      
      //那么我如何能将constructor属性再次指向Person呢?
      Person.prototype.constructor=Person;
      
      1. person实例继承了Person.prototype原型对象的所有的方法和属性,包括constructor属性。(每一个实例也有一个constructor属性,默认调用prototype对象的constructor属性)
    3. __proto __ : 指向构造该对象的构造函数的原型 (上一级原型) 。

      每个对象都有 __ proto__ 属性。
      其实这个属性指向了 [[prototype]],但是 [[prototype]] 是内部属性,我们并不能访问到,所以使用 __ proto __ 来访问。

    总结:

    1. constructor : 在原型中,指向构造函数。实例继承原型所得此属性,指向与原型中的相同

    2. __ proto__ :在实例对象中,指向生成此实例的构造函数的原型。原型也是对象(不在原型链顶端)也有此属性,指向它的构造函数的原型(上一级原型)。
      使用Object.getPrototypeOf()代替__proto__

    3. object instanceof constructor instanceof 运算符用来检测 constructor.prototype 是否存在于参数 object 的原型链上。

  • 相关阅读:
    洛谷P1428 小鱼比可爱 题解 枚举
    使用二分查找来判断一个有序序列中是否存在特定元素
    基础排序(冒泡、选择、插入)学习笔记
    CF1316B String Modification 题解 字符串模拟/找规律
    洛谷P2239 螺旋矩阵 题解 模拟
    洛谷P1076 寻宝 题解 模拟
    洛谷P1308 统计单词数 题解 模拟
    TypeError: unhashable type: 'dict'
    linux shell 多个命令一起执行的几种方法
    在Linux写shell脚本,执行python指令
  • 原文地址:https://www.cnblogs.com/topyang/p/11397152.html
Copyright © 2011-2022 走看看