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(子对象)

  • 相关阅读:
    内存泄漏 Memory Leaks 内存优化 MD
    Handler Thread 内部类引起内存泄露分析
    为什么不取消注册BroadcastReceiver会导致内存泄漏
    WebChromeClient 简介 API 案例
    WebViewClient 简介 API 案例
    java.net.URI 简介 文档 API
    android.net.Uri 简介 API
    RV 多样式 MultiType 聊天界面 消息类型 MD
    JS函数声明与定义,作用域,函数声明与表达式的区别
    CSS中table tr:nth-child(even)改变tr背景颜色: IE7,8无效
  • 原文地址:https://www.cnblogs.com/controlms/p/7767923.html
Copyright © 2011-2022 走看看