美文网首页
前端学习笔记之原型——一张图说明`prototype`和`__p

前端学习笔记之原型——一张图说明`prototype`和`__p

作者: astak3 | 来源:发表于2018-06-21 15:48 被阅读0次

    全局变量

    Global是是ECMAScript 中的全局对象(浏览器中是window),不属于其他对象的属性和方法,所有在全局作用域中定义的属性和方法,都是Global对象的属性(window)。

    window的属性分为两类,一种是ECMAScript 规定的,一种是浏览器私有的(各浏览器可能不一样)。ECMAScript 规定的的有parseIntparseFloatNumberStringObjectBoolean等,浏览器私有的alertconsolepromptdocument等。

    var n = 1        //n是基本类型(number)
    var n1 = new Number(1)        //n1是对象(object)
    

    对象有toString()方法,比如n1.toString()
    基本类型也可以用toString()方法,它是通过在内存中创建一个临时变量来获取的,比如temp.toString(),在语句结束后这个变量就被回收了,所以:

    var a = 1
    a.xxx = 2        //语句结束后被回收
    a.xxx   //undefined,再次访问该属性,值为undefined
    

    原型

    __proto__prototype的区别:

    var s = new String()
    //String.prototype 是 String 的公共属性(原型)的引用
    //s.__proto__ 是 String 的公有属性(原型)的引用
    

    NumberStringObjectBoolean的公有属性都存储在Object原型中。没写代码的时,浏览器就默认有这条原型链指向Object原型,如下图;当我们创建了一个变量后,它就创建了在Heap 中创建了一个对象,指向这个对象本身的原型,不在指向prototype,如下图红线。

    image

    对象.proto === 函数.prototype;

    var __①__ = new __②__;
    //① 类型:对象
    //② 类型:函数
    
    var Object = new Function();
    //var 对象 = new 函数;
    
    Object.__proto__ === Function.prototype;
    //对象.__proto__ === 函数.prototype;
    
    Function.__proto__ === Function.prototype;
    //因为 Function 也是 Object
    

    相关文章

      网友评论

          本文标题:前端学习笔记之原型——一张图说明`prototype`和`__p

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