zoukankan      html  css  js  c++  java
  • prototype的初步理解

    1.每一个函数数据类型(普通函数/类),天生自带属性prototype, 属性值是一个对象数据类型

    2.每一个对象数据类型,天生自带属性__proto__, 属性值是当前实例所属的类的prototype

    3.prototype的属性值是一个对象数据类型,这个对象里面有个浏览器自带的construnctor的属性,属性值是这个函数本身

     同时因为2,所以有属性__proto__

     换言之,浏览器产生的prototype有constructor和__proto__两个属性

    4.obj.__proto__ = Fn.prototype;

     Fn.prototype.constructor = Fn;

    5.Object是js中所有对象数据类型的基类(最顶层的类),Object.prototype.__proto__ = null;

    6.类是函数数据类型产生的,属于函数数据类型,姑且认为类就是这个函数,一个类的公共属性和方法放在这个类的prototype上,同时为了方便起见,prototype里内置了1个固定的属性constuctor,constuctor指向这个类本身,因为prototype是一个对象,而每一个对象都有__proto__,这个属性值是当前对象所属类的prototype

    function Cat(name){
        this.name=name
    }
    Cat.prototype.legs = 4;
    var cat = new Cat("huahua");
    
    // 当前对象所属类的prototype
    cat.__proto__ = Cat.prototype; 
  • 相关阅读:
    php2
    11-14php
    三层嵌套
    常见的浏览器兼容
    css中的一些问题及解决方法
    css
    html
    测试题
    正则表达式
    Math对象
  • 原文地址:https://www.cnblogs.com/2han/p/6278397.html
Copyright © 2011-2022 走看看