• 最近javascript的学习小记


    一、关于javascript的原型与隐式原型

    1.prototype

        首先function是一个对象,每一个function都具有一个prototype对象,prototype对象默认是{constructor:f},一个指向函数本身的对象。
    

    即:

    function a(){} =>undefined
    a.prototype
    =>{constructor:f}
    a.prototype.constructor===>function a(){}

    2.隐式原型

        首先除开function、Object对象外没有对象拥有prototype属性,并且每个对象都有一个隐式原型对象_proto_。该属性是一个隐藏属性,javascript不希望开发者使用该属性。  
    

    即:
    var b=1;=>undefined
    b._proto_
    =>Number {constructor:f Number(),......,_proto-:Object}

        我们可以看到b是一个数字变量,它的构造是由Number()函数创建出来的,最后 b._proto_._proto_ 是Object ,以此可见一切皆是对象
    

    Object.prototype._proto_===>null

        这里我们就可以看到对象的本质其实什么都没.
    

    3.函数的隐式原型

        上面我们定义了a方法,既然是方法对象,那么a应该不光有原型还理应有隐式原型。  
    即:  
    a.prototype===>{constructor:f}    //a的原型
    a._proto_===Object.prototype     //a的隐式原型
    Object.prototype.constructor===>function Object(){}
    

    4.我的理解

    还是面向对象的思想,这里面非常绕。为方便理解,我是这样想的:本质上什么都没有!程序员写了Object代码(最最最基础的代码)可以创建Object对象(包含非常基础简单的功能),在Object代码的基础上,再加些其它代码提升功能就变成了其它的方法代码。当实例化这些代码为对象时,代码中Object的代码部分也会被实例化到内存中。这应该就是继承了!
    

  • 相关阅读:
    SSL原理
    花不是玫瑰的全部
    sqlserver2008数据类型说明
    js识别半角字符的正则表达式
    js全角字符转半角字符
    java 全角字符转半角
    MySQL数据目录结构
    git使用
    [iOS]MVVM-框架介绍
    圆形进度条
  • 原文地址:https://www.cnblogs.com/Renzhendew0/p/10313832.html
Copyright © 2020-2023  润新知