• JavaScript中类的实现机制


    理解类的实现机制
    在前面已经讲过,在JavaScript中可以使用function关键字来定义一个“类”。现在介绍
    如何为类添加成员。其过程很简单,在函数内通过this指针引用的变量或者方法都会成为类
    的成员,例如:

    function class1(){
    var s=”abc”;
    this.p1=s;
    this.method1=function(){
    alert(“this is a test method”);
    }
    }
    var obj1=new class1();

    当通过new class1()获得对象obj1 时,这个对象便自动获得了属性p1和方法method1。
    在 JavaScript 中,function 本身的定义就是类的构造函数,结合前面介绍过的对象的性
    质以及new操作符的用法,下面来看使用new创建对象的过程。
    (1)当解释器遇到new操作符时便创建一个空对象;
    (2)开始运行class1 这个函数,并将其中的this指针都指向这个新建的对象;
    (3)因为当给对象不存在的属性赋值时,解释器就会为对象创建该属性,例如在class1
    中,当执行到this.p1=s 这条语句时,就会添加一个属性p1,并把变量s 的值赋给它,这样
    函数执行就是初始化这个对象的过程,即实现构造函数的作用;
    (4)当函数执行完后,new操作符就返回初始化后的对象。
    通过这整个过程,JavaScript中就实现了面向对象的基本机制。由此可见,在JavaScript
    中,function的定义实际上就是实现一个对象的构造器,是通过函数来完成的。这种方式的
    缺点是:
    l 将所有的初始化语句、成员定义都放到一起,代码逻辑不够清晰,要实现复杂的功
    能时往往力不从心。
    l 因为每创建一个类的实例,都要执行一次构造函数。所以实际上构造函数中定义的
    属性和方法总被重复的创建,例如:
    this.method1=function(){
    alert(“this is a test method”);
    }
    这里的method1 每创建一个class1 的实例,都会被创建一次,造成了内存的浪费。下面
    一节,将介绍另外一种类定义的机制:prototype 对象,可以解决构造函数中定义类成员带
    来的缺点。

  • 相关阅读:
    linux运维、架构之路-MySQL主从复制
    多线程
    IO
    查看信息
    乱码
    字节流与字符流
    file
    JDBC
    规范
    Java常用包
  • 原文地址:https://www.cnblogs.com/shaohz2014/p/3825873.html
Copyright © 2020-2023  润新知