📅  最后修改于: 2023-12-03 15:14:12.093000             🧑  作者: Mango
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)
上述代码中,sayHello
是person
对象的一个方法,当执行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
继承自Animal
。Dog
对象继承了Animal
对象的属性和方法。其中constructor
是构造函数,表示在创建对象时初始化对象的方法。describe
是Animal
对象和Dog
对象的方法,由于Dog
对象重写了describe
方法,所以当执行dog.describe()
时,将输出I'm a dog. My name is 旺财。
在CoffeeScript中,对象的创建与JavaScript类似,使用花括号表示,并使用冒号分隔键值对。访问对象的属性可以使用点符号或者方括号;遍历对象使用for...in
语句;对象可以拥有方法,使用函数的语法即可;对象还支持继承,使用extends
关键字即可。CoffeeScript的语法相比JavaScript更为简洁,可读性更高,使用它可以更加方便地创建对象。