博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
类和原型之工厂模式!
阅读量:6799 次
发布时间:2019-06-26

本文共 1593 字,大约阅读时间需要 5 分钟。

1 function inherit(p){ 2          if(p == null) throw TypeError();//非空对象否则抛出异常 3          if(Object.creat){ 4              //通过Object.creat()创建继承了其属性和方法 5             return Object.creat(p);//如果存在Object.creat 直接使用这个对象 6          } 7          var t = typeof p;//否则进一步的检测 8          if(t !== "object" && t !== "function") throw TypeError() 9          function f(){};10          f.prototype = p;//p对象赋值给f的原型,这时f原型指向就是p的原型11          return  new f();//返回实例对象12       }13       /*工厂方法14        *主要功能:创建范围对象15        */16       function range(from,to){17          var r =inherit(range.methods);18          //初始化19          r.from = from;20          r.to = to;21          return r;//返回实例对象22       }23       //函数添加一个属性,存储一组行为的方法24       range.methods ={25          includes : function (x){26             return this.from <= x && x <= this.to;27          },28          foreach : function(f){29              for(var x = Math.ceil(this.from);x <= this.to; x++) f(x);30          },31          toString : function(){
return "("+this.from+"...."+this.to+")";}32 };33 var r = range(1,3);34 r.includes(2);35 r.foreach(console.log);36 console.log(r);

关于Object.creat();

创建一个新对象,第一个参数是这个对象的原型,第二个参数是可选的。

是个静态函数,而不是提供给某个对象调用的方法,只需要传入对象的原型。

例如1:  var o1 = Object.create({x:1,y:2});//继承了属性x和y 

如果传入是null 则没有继承任何对象,甚至不包括基础的方法,比如toString(),它也不能和 “+”运算符一起工作。

例如2:

var o2 = Object.create(null);//不继承任何属性和方法

如果想创建普通的空对象

可以通过: {} 和 new Object()创建对象 传入 Object.prototype

var o3 = Object.create(Object.prototype);//和{}、new Object()一样

 

转载于:https://www.cnblogs.com/sunflower-smile/p/6710203.html

你可能感兴趣的文章
Java6 WebService学习
查看>>
命名规则 : 匈牙利法则
查看>>
适用于单选的jQuery Auto-complete插件SelectToAutocomplete
查看>>
我的Windows 8下看漫画程序差不多可以用了
查看>>
rabbitmq使用__python客户端(消息接收者)
查看>>
如何实现一套鼠标键盘控制二台主机
查看>>
html5 手机页面
查看>>
Ubuntu 配置VNC以及使用VNC连接时,无法显示系统菜单栏,解决方法
查看>>
c# 如何通过反射 获取\设置属性值、
查看>>
分享:Apache OpenNLP 1.5.3 发布
查看>>
PCB_栅格大小设置
查看>>
在eclipse 的整个工程中查找字符串
查看>>
[转]Android中的Intent详细讲解
查看>>
电商也要懂的实体渠道实战知识zz
查看>>
命令行管理远程windows.(Remote Command Line On Windows)
查看>>
调用webservice使用URLConnection调用webservice
查看>>
父亲节例行吐槽
查看>>
c#动态创建ODBC数据源
查看>>
修改visual studio2010 的快捷键,使用ctrl+W 关闭当前文档
查看>>
ckeditor
查看>>