美文网首页
原型与原型链

原型与原型链

作者: H_uan | 来源:发表于2018-09-04 23:04 被阅读0次

    一、全局对象

    • 1、一种是 ECMAScript 规定的
      global.parseInt
      global.parseFloat
      global.Number
      global.String
      global.Boolean
      global.Object

    • 2、一种是浏览器自己加的属性
      window.alert
      window.prompt
      window.comfirm
      window.console.log
      window.console.dir
      window.document
      window.document.createElement
      window.document.getElementById


      图片全局对象.png

    二、全局函数(简单类型与对象的区别)

    Number,String,Boolean,Object

    1、Number
    • 1、直接声明number(1)与New Number(1)的区别
    var n1 = 1; 
    var n2 = new Number(1);
    
    
    n1与n2的区别:指向地址不同
    图片1.png
    图片2.png 图片3.png
    • 为何n1可调用toString等方法的原因:妙计


      图片.png
    • var n1 = 1;n1.toString()内存发生的过程:调用toSting方法的时候,就产生了一个临时temp对象,并有对象的所有属性

      图片4.png
    • ! 特别注意:(当前一句执行完,临时对象就抹杀掉)

    var n=1;
    n.xxx = 2;//产生一个临时对象temp(属性有xxx:2,执行完后,temp被抹杀掉),
    打印:n.xxx = ?//结果是undefined (产生一个新的temp对象,取xxx对象)
    
    2、String
    var a1= 'sdfasffge'
    var a2 = new String('asdfadf')
    console.log(a2);//String 0: "a" ,1: "s" ,2: "d" ,3: "f"...length:7,__proto__: String { "" }
    a2[0];//"a"
    a1[0];//"s"
    a2.anchor();//"<a name=\"undefined\">asdfadf</a>"
    a2.charAt(0);//"a"
    a2.charAt(1);//"s"
    a2.charCodeAt(0);//97
    a2.charCodeAt(1);//115
    'a'.charCodeAt();//97 十进制的a
    'a'.charCodeAt('0').toString(16);//"61" a的十六进制的unicode码
    '   dfasdasd      '.trim();//dfasdasd   trim()去掉前后的空格
      a.concat(b);//连接起来
    a.slice(0,2);//包前不包后
    //了解更多,搜索string mdn
    
    3、Boolean
    var b1 = false;
    var b2 = new Boolean(false);
    if(b1){console.log(1)};//不执行
    if(b2){console.log(2)};//2
    

    五个false值:'0', NaN, ' ' ,null, undefined, false, 都是false值

    所有对象都是truey
    4、Object
    var o1 = {};
    var o2 = new Object();
    o1===02//false
    

    o1与o2完全没有区别,但并不是相等


    图片对象内存图.png

    新申明的对象都是不相等的,对应的内存地址不同,除非地址赋给另一个变量

    必记:7种类型, 5个false值, 内存图

    三、公用属性

    __proto__

    图片1.png
    图片2.png
    图片3.png 图片4.png
    var o1 = {}
    var o2 = new Object()
    o1===o2;//false o1和o2是不同对象
    o1.toString ===o2.toStiring();//true 公用属性
    

    Number与Object区别


    图片.png
    • 1、number:


      图片Number共有属性.png
    图片Number与Object.png
    图片普通对象与Object对象共有属性关系.png
    原型就是共有属性也就是prototype
    图片原型树.png
    __proto__prototype的区别:
    • __proto__是对象的属性
    • prototype是函数的属性

    公式:

    var 对象 = new 函数()
    对象.__proto__ === 函数.prototype

    常用:

        var num = 1
        num.__proto__ === Number.prototype
        num.__proto__.__proto__ === Object.prototype
        num.__proto__.constructor === Number
        Number.prototype.__proto__ === Object.prototype
        Number.prototype.constructor === Number
        
        var fn = function(){}
        fn.__proto__ === Function.prototype
        fn.__proto__.__proto__ === Object.prototype
        fn.__proto__.constructor === Function
        Function.__proto__ === Function.prototype
        Function.prototype.__proto__ === Object.prototype
        Function.prototype.constructor === Function
    
        var array = []
        array.__proto__ === Array.prototype
        array.__proto__.__proto__ === Object.prototype
        array.__proto__.constructor === Array
        Array.prototype.__proto__ === Object.prototype
        Array.prototype.constructor === Array
    
        var bool = true
        bool.__proto__ === Boolean.prototype
        bool.__proto__.__proto__ === Object.prototype
        bool.__proto__.constructor === Boolean/**/
        Boolean.prototype.__proto__ === Object.prototype
        Boolean.prototype.constructor === Boolean
    
        var str = "String"
        str.__proto__ === String.prototype
        str.__proto__.__proto__ === Object.prototype
        str.__proto__.constructor === String
        String.prototype.__proto__ === Object.prototype
        String.prototype.constructor === String
        
        var object = {}
        object.__proto__ === Object.prototype
        object.__proto__.__proto__ === null
        object.__proto__.constructor === Object
        Object.prototype.__proto__ === null
        Object.prototype.constructor === Object
    

    相关文章

      网友评论

          本文标题:原型与原型链

          本文链接:https://www.haomeiwen.com/subject/ceznwftx.html