• 简述JavaScript的类与对象


    JavaScript语言是动态类型的语言,基于对象并由事件驱动。用面向对象的思想来看,它也有类的概念。JavaScript 没有class关键字,就是用function来实现。

    1. 实现方式及变量/方法访问域控制

    1 function fruit(name, color)
    2 {
    3     // public variable
    4     this.name = name;
    5     this.color = color;
    6 }

    用this来标识变量或方法是public。

    1 var apple = new fruit('apple''red');

    跟其他大多数语言一样是用 new 关键字来实例化一个类的对象。这样 apple.name 的值就是 ‘apple'。内部变量则使用var关键字:

    1 function book()
    2 {
    3     var subject = "welcome to nowamagic.net";   
    4 }
    5 var b1 = new book();

    这个时候访问b1.subject,得到的结果是"undefined"。

    2. 类的扩展

    JavaScript是动态语言,因此我们可以在类创建之后再给他添加属性(field)或方法。具体做法就是使用prototype:

    01 function fruit(name, color)
    02 {
    03     // public variable
    04     this.name = name;
    05     this.color = color;
    06 }
    07 var apple = new fruit('apple''red');
    08 var orange = new fruit('orange''yellow');
    09 //apple.gender = 'undefined'
    10 fruit.prototype.gender=1;
    11 //apple.gender = 1
    12 //orange.gender = 1
    13 //fruit.prototype.gender = 1

    可以看到变量apple, orange都有了gender的属性,且值为1。

    也有人把prototype扩展的内容称之为静态方法或属性,我认为这样称呼有些不太合适,因为静态的内容是不能通过对象来访问的,这里则可以,且如果更改apple.gender,不会影响orange.gender的值。另一个理由这里的gender不能像其他语言的静态属性一样直接是用类名来访问:

    1 apple.gender = 1   //error : student.gender undefined

    只能这样:

    1 fruit.prototype.gender    // 值为 1

    3. 对象与数组的关系

    1 var tom = {};
    2 //typeof(tom)  //object
    3 tom['Email']='qq@qq.com';
    4 // tom.Email  值为 'qq@qq.com'
    5 tom.Website="www.nowamagic.net";
    6 // tom["Website"] 值为 "www.nowamagic.net"

    由此可以见对象的field可以通过数组的方式访问,反之亦然。使用field的方式访问,从风格上讲更像面向对象的风格,但是是用数组方位在某些遍历对象的时候很是方便。

  • 相关阅读:
    Java 练习(获取两个字符串中最大相同子串)
    STM32F103 实现 简易闹钟小程序
    STM32F103 实现 LCD显示年月日时分秒星期 并可逐值修改的日期 小程序
    Docker报错之“Failed to get D-Bus connection: Operation not permitted”
    数据结构解析
    每天一条DB2命令-004
    每天一条DB2命令-003
    每天一条DB2命令-002
    ElasticSearch系列
    模块三 GO语言实战与应用-BYTES包与字节串操作(下)
  • 原文地址:https://www.cnblogs.com/xiaoyang002/p/4101497.html
Copyright © 2020-2023  润新知