JavaScript创建对象的方法
显示在浏览器中的控制台中。
<script type="text/javascript"> //这个工厂方法返回一个新的"范围对象" function range(from,to){ //使用inherit()函数来创建对象,这个对象继承自在下面定义的原型对象 //原型对象作为函数的一个存储,并定义所有“范围对象”所共享的方法(或者叫行为) //var r = inherit(range.methods); var r = Object.create(range.methods) //r是一个继承自range.methods的对象 //存储新的“范围对象”的起始位置和结束位置(状态) //这两个属性是不可继承的,每个对象都拥有唯一的属性 r.from = from; r.to = to ; //返回这个新创建的对象 return r; }; //原型对象定义放法,这些放发为每个范围对想所继承 range.methods = { //如果x在范围内,则返回true,否则返回false //这个方法可以比较数字范围,也可以比较字符串和日期范围 includes: function(x){ return this.from < x && this.to > x ; }, //对于范围内的每个证书都调用一次f //这个方法只有可用作数字范围 foreach : function(f){ for(var x = Math.ceil(this.from); x<this.to; x++) f(x); }, //返回表示这个范围的字符串 toString : function(){ return "("+this.from+"...."+this.to+")"; }, }; //这里是使用“范围对象”的一些例子 var r = range(1,5); console.log(r.includes(5)); r.foreach(console.log); console.log(r); //使用构造函数创建一个对象(常用) //注意:这里并没有创建并返回一个对象,仅仅是初始化 function Range( from , to ){ //存储“范围对象”的起始位置和结束位置(状态) //这两个属性是不可继承的,每个对象都拥有唯一的属性 this.from = from ; this.to = to; } //所有的“范围对象”都继承自这个对象 //注意,属性的名字必须是 prototype ********/ Range.prototype = { //如过x在范围内,则返回true,否则返回false //这个方法可以比较数字范围,也可以比较字符串和日期范围 includes : function(x){ return this.from < x && x < this.to; }, //对于范围内的每个证书都调用一次f() //这个方法只可用于数字范围 foreach : function(f){ for(var x = Math.ceil(this.from); x<this.to; x++) f(x); }, //返回表示这个范围的字符串 toString : function(){ return "("+this.from+"...."+this.to+")"; }, } //这里是使用“范围对象”的一些例子 console.log("使用构造函数创建一个对象(常用):"); var R = new Range(1,5); //注意这个构造函数用关键字new来调用 console.log(R.includes(5)); R.foreach(console.log); console.log(R); </script>