zoukankan      html  css  js  c++  java
  • js面向对象

    1.什么是对象?

      多个数据的封装体

      用来保存多个数据的容器

      一个对象代表现实中的一个事物

    2.为什么要用对象?

      统一管理多个数据

    3.如何访问对象内部数据?

      ( . )属性名:编码简单,有时不能用

        [ ‘ 属性名 ’ ]:编码复杂,能通用

    4.什么时候必须使用[ ‘ 属性名 ’ ]的方法?

      属性名包含特殊字符: - 空格

      属性名不确定

    5.js中如何去生成对象?

      (1)单例模式/字面量定义 var obj={name:"zhang"}

      (2)var obj=new Object() 内置类

          Obj.name="zhang"

          js内置的类 string array object number boolean  date function

      (3)工厂模式

          function create(){

            var obj={}

            Obj.name=

            return obj;

          }  

      (4)构造函数

          function Person(){

            this.name="li"

          }

          var zhang=new Person()

    6.this的问题

      任何函数本质上都是通过某个对象来调用的,如果没有直接指定就是window

      所有函数内部都有一个变量this

      它的值是调用函数的当前对象

    7.原型对象

      把相同的属性和方法写在构造函数的原型对象里。
      构造函数的实例对象 new 出来的实例就全部可以访问。
      原型对象存在的最大作用就是节省内存空间

    8.原型prototype

      每个函数 类天生自带一个prototype的属性,这个属性是个对象,它里面天生自带一个constructor的属性,属性值是当前函数/类本身;

      每个实例对象 天生自带一个__proto__的属性,这个属性是对象,它指向当前实例对象的类的原型

    9.原型链

      每个对象天生有一个__proto__,指向类的原型。

      prototype 和 __proto__

      (1).prototype是类的或者函数的,__proto__是对象的。

      (2).prototype是存储机制,程序员来实现。__proto__是查找机制(浏览器的)。

      例子:zhangsan.name

        zhangsan这个对象首先看name是私有的,是就直接使用,不是的就通过__proto__往他的类的prototype上查找,有就直接使用,没有就继续往上查找,直到查找到基类Object,没有就是undefined,有就直接使用,这种查找机制叫原型链。

    10.类的继承

    1. 原型继承 将父类的实例对象赋值给子类的原型,私有的公有的都继承为公有的
    2. Call继承  call方法是函数/类天生自带的一个方法,将父类私有的继承为子类私有的
    3. 冒充对象继承   将父类私有的和公有的都继承为子类私有的,使用for  in
    4. 混合继承  私有的继承为私有的  私有的和公有的再次继承为公有的
    5. 组合继承 私有继承为私有  公有继承为公有

        私有继承私有  借助call 公有继承为公有 不能是原型赋值给原型。因为原型是对象,是复合数据类型,是地址赋值给了前者,导致二者指向同一个原型,得克隆。   

        Js的克隆如何实现   var obj2 = object.create(obj1)

        6.中间类继承 (伪数组)

  • 相关阅读:
    装饰器的写法以及应用环境
    面向对象中super的作用
    os与sys模块的作用与常用方法
    python re模块
    python 冒泡排序,二分法
    正则表达式
    python 高阶内置函数
    python 内置函数
    python 生成器和生成器表达式
    python 函数名的应用(第一类对象),闭包,迭代器
  • 原文地址:https://www.cnblogs.com/QQ2534978223/p/11359037.html
Copyright © 2011-2022 走看看