📜  CoffeeScript-对象(1)

📅  最后修改于: 2023-12-03 15:14:12.093000             🧑  作者: Mango

CoffeeScript对象

CoffeeScript是一种编译成JavaScript的语言,它的语法更为简洁,可读性更高,而且在某些场景下执行速度更快。其对象的语法与JavaScript有些不同,下面将介绍CoffeeScript对象的创建与使用。

对象的创建

CoffeeScript使用花括号来表示对象,对象的键值对使用冒号(:)分隔,多个键值对之间用逗号(,)分隔。如下所示:

person =
    name: '张三'
    age: 18

上述代码创建了一个名为person的对象,对象有两个键值对,每个键值对分别为name: '张三'age: 18。相当于以下JavaScript代码:

var person = {
    name: '张三',
    age: 18
}

还可以使用{}来创建空对象,如下所示:

emptyObj = {}
对象的访问

访问对象的属性,使用点(.)符号或者方括号([])来访问。如下所示:

person.name      # 等价于 person['name']
person.age       # 等价于 person['age']

如果对象的键是一个合法的标识符,那么直接使用点(.)符号访问属性即可;如果对象的键不是一个合法的标识符,那么使用方括号([])访问属性,方括号内使用引号(''"")将键括起来。

对象的遍历

遍历对象,使用for...in语句。如下所示:

person =
    name: '张三'
    age: 18

for key, value of person
    console.log(key + ': ' + value)

上述代码遍历了person对象中的每一个键值对,输出了键和值。相当于以下JavaScript代码:

var person = {
    name: '张三',
    age: 18
};

for (var key in person) {
    if (person.hasOwnProperty(key)) {
        console.log(key + ': ' + person[key]);
    }
}
对象的方法

对象除了属性以外,还可以拥有方法。使用函数的语法来创建对象的方法,如下所示:

person =
    name: '张三'
    age: 18
    sayHello: ->
        console.log('Hello, my name is ' + @name)

上述代码中,sayHelloperson对象的一个方法,当执行person.sayHello()时,将输出Hello, my name is 张三。其中@等价于this,表示当前对象。

对象的继承

CoffeeScript还支持使用关键字extends来进行对象的继承。如下所示:

class Animal
  constructor: (@name) ->

  describe: ->
    console.log("I'm an animal. My name is #{@name}.")

class Dog extends Animal
  describe: ->
    console.log("I'm a dog. My name is #{@name}.")

上述代码中,Animal是一个基类,Dog是一个派生类,使用extends继承自AnimalDog对象继承了Animal对象的属性和方法。其中constructor是构造函数,表示在创建对象时初始化对象的方法。describeAnimal对象和Dog对象的方法,由于Dog对象重写了describe方法,所以当执行dog.describe()时,将输出I'm a dog. My name is 旺财。

总结

在CoffeeScript中,对象的创建与JavaScript类似,使用花括号表示,并使用冒号分隔键值对。访问对象的属性可以使用点符号或者方括号;遍历对象使用for...in语句;对象可以拥有方法,使用函数的语法即可;对象还支持继承,使用extends关键字即可。CoffeeScript的语法相比JavaScript更为简洁,可读性更高,使用它可以更加方便地创建对象。