• JavaScript 对象创建及继承方式


    前言:

           JavaScript 除了null和undefined之外,其他变量都可以当做对象使用。

           JavaScript 的基本数据类型有:number boolean string null  undefined ,其他所有值都是对象。

           JavaScript 的 typeof 只能判断 number boolean string undefined function object 不能判断一些具体的对象类型和null。

           如果要判断对象的具体类型则要使用  Object.prototype.toString.apply(aaa) === "[Object Array]" 来判断,或者根据该对象的特有性质判断,如Array对象有一个特殊属性length。

          JavaScript 的顶层函数(对象),Array,RegExp,Date,String,Object,Function等有prototype属性。

          Array , RegExp ,Date ,String,  Function 都会继承 Object.prototype中的属性和方法。而Object.prototype.__proto__ 为null。

    JavaScript 的对象创建:

         1.由构造函数创建的对象继承自创建该对象的构造函数的prototype

           1.1   var a = new Object(obj);

                   对象 a 会对对象obj进行浅复制,即对象a可以引用对象 obj 中的方法和属性,但是a的原型继承指向的是 Object.prototype。此外,对象a可以修改对象 obj中的属性和方法。

           1.2   var a  = Object.create(obj);

                  对象a的原型继承指向obj,a可以引用obj对象中定义的属性和方法,但是不能对obj中的属性和方法进行修改,当a对obj中的属性和方法赋值时,相当于在对象a中定义属性和方法。

           1.3 var FF = function(){}; var a = new FF();

                  此时对象a的原型继承指向 FF的prototype.

         2.由对象字面量创建的对象

            2.1  var a = [];

                   对象a 继承自 Array.ptototype

            2.2  var a ={};

                   对象a指向 Object.prototype.

    总结:所有的对象都有隐藏的__proto__属性,所有的函数都有__proto__之外,还有一个prototype对象属性。

         

           

     

  • 相关阅读:
    C# String 前面不足位数补零的方法
    bootstrap-wysiwyg这个坑
    PRECONDITION_FAILED
    JdbcTemplate in()传参
    Mysql Specified key was too long; max key length is 767 bytes
    获取两日期之前集合并转为String类型的集合
    SQL里的concat() 以及group_concat() 函数的使用
    spring boot如何打印mybatis的执行sql
    MockMvc 进行 controller层单元测试 事务自动回滚 完整实例
    找到 Confluence 6 的日志和配置文件
  • 原文地址:https://www.cnblogs.com/wust-hy/p/7686818.html
Copyright © 2020-2023  润新知