求解释下面js中的枚举类型的代码是什么意思?

<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<title></title>
	<script type="text/javascript">
	function inherit(p){
		if(p==null) throw TypeError();
		if(Object.create) return Object.create(p);
		var t=typeof p;
		if(t!=="object"&& t!=="function") throw TypeError();
		function f(){};
		f.prototype=p;
		return new f();
	}
	function enumeration(namesToValues){
		var enumeration=function(){throw "can't instantiate enumeration"};
		var proto=enumeration.prototype={
			constructor:enumeration,
			toString:function(){return this.name;},
			valueOf:function(){return this.value;},
			toJSON:function(){return this.name;}
		};
		enumeration.values=[];
		for(name in namesToValues){
			var e=inherit(proto); 
			e.name=name;     
			e.value=namesToValues[name]; 
			enumeration[name]=e;
			enumeration.values.push(e);
		}
		enumeration.foreach=function(f,c){
			for (var i=0;i<this.values.length;i++)
				f.call(c,this.values[i]);
		};
		return enumeration;//
	}
	var Coin=enumeration({Penny:1,Nickel:5,Dime:10,Quarter:25});
	var c=Coin.Dime;
	console.log(c instanceof Coin);
	console.log(c.constructor== Coin);
	console.log(c);
	console.log(Coin.Nickel);
	console.log(Coin.values);
	console.log(Coin.Nickel==5); 
	console.log(Coin.Nickel+Coin.Penny);     //==6
	</script>
</head>
<body>
</body>
</html>

这里Coin.Nickel,Coin.Penny都是类属型,值是一个对象,为什么可以相加呢?


徐锦杰
浏览 1870回答 2
2回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript