• JavaScript对象及初识面向对象


    在JavaScript中,对象是拥有属性和方法的数据,属性是与对象相关的值,方法是能够在对象上执行的动作。JavaScript是通过一种叫做原型的方式来实现面向对象编程的。(面向对象仅仅是一个概念或者编程思想,它不依赖于某个语言存在。)

    一、创建对象

      1、内置对象:常见的有String、Date、Array、Boolean、Math、RegExp

      2、自定义对象

        01、基于Object对象的方式创建对象

          var 对象名称=new Object();  (创建了一个对象)

          对象名称.属性名="属性值";  (给对象添加属性)

          对象名称.方法名=function(){ JavaScript语句}  (给对象添加方法)

        02、字面量赋值法

          var 对象名={  属性名1:属性值1, 属性名2:属性值2, 方法名:function(){ JavaScript语句}  }  (注意属性名和属性值之间用冒号,多个属性之间用逗号--Json格式)

      补充:

           1. 简单对象的创建    使用对象字面量的方式{}  
           2.用function(函数)来模拟class (无参构造函数)
           3.使用工厂方式来创建(Object关键字)
           4.使用原型对象的方式  prototype关键字
           5.混合模式(原型和构造函数)
           6.动态原型的方式(可以看作是混合模式的一种特例)

    二、构造函数

      所谓的“构造函数”就是一个普通函数,但是内部使用了this变量,对构造函数使用new操作符,就能生成实例,并且this变量会绑定到在实例对象上

    function    Flower(name,genera,area,use){
        this.name=name;
        this.genera= genera;
        this.area=area;
        this.use=uses;
        this.showName=showName;
    }
    function showName(){
        alert(this.name);
    }

     三、原型对象

      在JavaScript中每个对象都有一个prototype属性,这个属性是一个指针,指向原型对象。prototype就是通过调用构造函数而创建的那个对象实例的原型对象。

      在默认情况下,所有原型对象都会自动获得一个constructor(构造函数)属性,这个属性包含一个指向prototype属性所在函数的指针。

    四、原型链

       在JavaScript中,每个构造函数都拥有一个原型对象(prototype),原型对象都包含一个指向构造函数的指针(constructor),实例都包含一个指向原型对象的内部指针(_proto_)

    function Human(){
        
    }
    function Woman(){
    
    }
    Woman.prototype=new Human();

    Woman.prototype等于另一个类型Human的实例,那么此时,原型对象Woman.prototype将包含一个指向原型Human.prototype的指针,如此层层递进,构成了实例与原型的链条,这就是所谓的原型链。

    五、借用构造函数

      借用构造函数:就是在子类型构造函数的内部调用父类型构造函数,即在子类型构造函数内部通过apply()或call()方法调用父类型的构造函数

        apply(thisObj,argArry)  call(thisObj,arg1,arg2,arg3.......)区别在于apply只接受两个参数,call却需要把传递给函数的参数全部列举出来

    六、组合继承

      有时也叫伪经典继承,其思路是使用原型链实现对原型属性和方法的继承,而通过借用构造函数来实现对实例属性的继承。

    function Animal(name,age){
        this.name=name;
        this.age=age
    }
    function Dog(name,sex,color){
        Animal.call(this,name);//通过借用构造函数,Dog还可以添加自己的属性sex、color
        this.sex=sex;
        this.color=color;
    }
    Dog.prototype=new Animal();//通过原型链实现对原型属性和方法的继承
  • 相关阅读:
    强制ubuntu登陆用户退出
    命令行设置ubuntu 无密码自动登陆
    docker 添加普通用户权限
    CMake配置工程链接库
    配置glibc
    编译sfml
    GNOME设置快捷键
    设置jetson nano VNC
    深度学习中的基本概念——评价指标相关
    行为识别
  • 原文地址:https://www.cnblogs.com/vic_/p/7822685.html
Copyright © 2020-2023  润新知