闭包枚举类型基于来自 Java 和 C++ 等语言的枚举类型的概念。在 Java 中,枚举类型定义如下:
枚举类型是一种类型,其字段由一组固定的常量组成。常见示例包括指南针方向(NORTH、SOUTH、EAST 和 WEST 的值)和星期几。
在上面的示例中,animals.Fish.Properties
可能应该表示为记录类型,因为分配的值不是常量。在下面的示例中,animals.Fish.Properties
已重命名animals.Properties
,以便它可以应用于任何类型的动物(不仅仅是鱼)。
鱼.js
goog.provide('animals.Fish');
goog.provide('animals.Properties');
/** @typedef {{name: string, awesomeness: string}} */
animals.Properties;
/**
* @param {animals.Properties} properties Animal properties.
* @constructor
*/
animals.Fish = function(properties) {
/** @type {string} */
this.name_ = properties.name;
/** @type {string} */
this.awesomenessLevel_ = properties.awesomeness;
};
/**
* @return {string} The name of the fish.
*/
animals.Fish.prototype.getName = function() {
return this.name_;
};
动物应用程序.js
goog.provide('animals.app');
goog.require('animals.Fish');
animals.app.tuna = new animals.Fish({name: 'tuna', awesomeness: '100'});
alert(animals.app.tuna.getName()); // alerts 'tuna'
附带说明一下,在原始示例中,AWESOMENESS: 'awesomenessLevel'
在animals.Fish.Properties
. 此外,在您的第二个文件中,您需要使用完全限定的枚举名称。所以代替animals.Fish.NAME
它会是animals.Fish.Properties.NAME
.