原型链

    区分1    和  new Number(1)的 区别:
               前面是一个基本数据类型值
              后面是一个引用数据类型值(对象)
      相同点:
       都是Number这个类的一个实例
      函数类型:
            1.普通函数
               2.构造函数(类:内置类和自己创建的类)
      对象类型:
           1.普通对象
            2.Math\ JSON...
           3.类的实例(数组,正则,日期...)
           4.prototype  或者_proto_
            5.arguments 或者元素集合等类数组
            6.函数也是一种对象
            7....
           =>万物皆对象(这些也就验证了)
     
     1.每一个函数(类)都有一个prototype(原型)属性,属性值是一个对象;这个对象中存储
      了当前类供实例调取使用的公有属性和方法
      2.在“浏览器默认” 给原型开辟的堆内存中有一个属性constructor;存储的是当前类本身
      3.每一个对象(实例)都有一个_proto_属性,这个属性指向当前实例所属类的原型(不确定所属的类,都指向Object,prototype)
     

 


    function Fn() {
        this.x=100;
        this.y=200;
        this.getX=function() {
            console.log(this.x);
        }
    }
    Fn.prototype.getX=function(){
        console.log(this.x);
    };
    Fn.prototype.getY=function(){
        console.log(this.y);
    }
    var f1=new Fn;
    var f2=new Fn;
    console.log(f1.getX === f2.getX);//false
    console.log(f1.getY === f2.getY);//true
    console.log(f1.__proto__.getY === Fn.prototype.getY);//true
    console.log(f1.__proto__.getX === f2.getX);//false
    console.log(f1.getX === Fn.prototype.getX);//false
    console.log(f1.constructor);//Fn
    console.log(Fn.prototype.__proto__.constructor);// Object
    f1.getX();//this:f1 => console.log(f1.x) =>100
    f1.__proto__.getX();//this:f1.__proto__=>console.log(f1.__proto__.x)=>undefined
    f2.getY();//this:f2=>console.log(f2.y)=>200
    Fn.prototype.getY();//this:Fn.prototype=>console.log(Fn.prototype.y)=>undefined

图示

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值