zoukankan      html  css  js  c++  java
  • 对象的创建和继承

      梳理一下关于对象的基本内容

    1.对象创建

      对象有四种创建方式,包括对象直接量、new构造函数、new Object函数、Object.create(父对象,{扩展属性的列表对象})

    【对象直接量】

    var obj={
        "属性名":值;
        ...
        "方法名":function(){...};
    }

    【new Object】

    var obj=new Object();
    obj.属性名=值;
    obj.方法名=function(){...};

    【new构造函数】

    //new创建对象的方法分成2步
    //1.创建构造函数
    function 构造函数名(属性参数1...){
        this.属性名=属性参数1;
        ...
        this.方法名=function(){
            //操作
        }
    }
    //2.利用构造函数创建对象
    var obj=new 构造函数名();

      【new在此处所做的事情】

        1.创建了一个空对象:var obj={};

        2.用空对象,调用构造函数,构造函数在空对象中添加属性和方法。

        3.设置新对象的_proto_指向构造函数的prototype对象

        (每个对象都有一个_proto_属性,指向该对象的构造函数的原型对象【此对象中包含了各个子对象的公共属性】)

        (每个函数都有一个prototype属性,只有当函数时构造函数时,才有意义)

        4.返回新对象的地址。

    2.继承

      【js中所有的继承都是通过原型对象实现的】

      每个函数对象都有一个原型对象。

        构造函数的原型对象负责保存所有子对象的共享成员

      【建议】

        将所有子对象共享的方法,都定义在构造函数的原型对象中。

      【说明】

        所有的内置类型的API都是定义在类型.prototype中

    【扩展对象属性】

      1.扩展共有属性:通过构造函数.prototype添加

      2.扩展自有属性:通过某个子对象添加

    【判断自有属性和共有属性】

      1.自有属性:obj.hasOwnProperty("属性名");

      2.共有属性:"属性名" in obj(在原型或自己中)&&!obj.hasOwnProperty("属性名") (在自己中没有)

    【删除属性】

      delete 对象.属性名

      只能删除自有属性,不能删除共有属性

      全局变量:var n=1;  window.n=1;  window["n"]=1;(可删除)

    【原型链】

      所有的父子级对象之间由_proto_形成的多级引用关系---->多级继承

    【原型相关API】 

      【获取任意对象的父级原型对象】

        Object.getPrototypeOf(子对象)==>子对象._proto_

      【检查对象2是否是对象1的原型对象】

        父对象.isPrototypeOf(子对象)

  • 相关阅读:
    Android Studio快速定位当前文件所在的位置
    LeetCode:Search Insert Position
    apk当安装程序将文件复制到手机自带的指定文件夹
    《UNIX级别编程环境》注意读出信号(2)
    iOS:删除小程序
    百度CSND博客在搜索栏中显示图片
    HDU4893:Wow! Such Sequence!(段树lazy)
    Google I/O 2014? No,Android I/O 2014
    Android Push Notifications using Google Cloud Messaging (GCM), PHP and MySQL
    自己动手写CPU 笔记
  • 原文地址:https://www.cnblogs.com/controlms/p/7767923.html
Copyright © 2011-2022 走看看