当前位置: 首页 > news >正文

深圳市住建局网站官网/百度网络优化推广公司

深圳市住建局网站官网,百度网络优化推广公司,网站评论管理怎么做,临沂展厅设计公司工厂模式: 初级开发者可能会这样定义对象: var obj new Object(); obj.name "hero"; obj.showNamefunction (){alert(this.name);} 这里存在一个问题就是如果我们要在多个地方用obj对象,可能在程序中类似的代码要写好多遍,于是产生了工厂方法 function create…

工厂模式:
初级开发者可能会这样定义对象:

var obj = new Object(); 
obj.name = "hero"; 
obj.showName=function (){alert(this.name);} 

这里存在一个问题就是如果我们要在多个地方用obj对象,可能在程序中类似的代码要写好多遍,于是产生了工厂方法 

function createObj() 
{ 
var obj = new Object(); 
obj.name="hero"; 
obj.showName=function (){alert(this.name);} 
return obj; 
} 
var obj1 = createObj(); 
var obj2 = createObj(); 

和另外一种方法 构造函数法 

function obj (name) 
{ 
this.name=name; 
this.showName= function (){alert(this.name);} 
} 

把生成对象的代码封装起来,避免出现重复new的代码,当然也可以进一步改进,就是createObj传递一些参数,而不是给obj赋默认固定值: 

function createObj(name) 
{ 
var obj = new Object(); 
obj.name=name; 
obj.showName=function (){alert(this.name);} 
return obj; 
} 
var obj1 = createObj("hero"); 
var o'b'j2=createObj("dby"); 

但是存在一个问题,就是我们每次调用createObj函数都会创建新的函数 showName.意味着每个对象都有自己版本的showName,所以要改进避开这个问题. 

function showName() 
{ 
alert(this.name) 
} 
function createObj(name) 
{ 
var obj = new Object(); 
obj.name=name; 
obj.showName=showName; 
return obj; 
} 

这样就解决了 重复创建函数的问题, 哈哈哈,大功告成 . 

原型方式:
主要是利用对象的prototype属性.

function obj() 
{} 
obj.prototype.name="hero"; 
obj.prototype.showName=function() 
{ 
alert(this.name); 
} 

看起来似乎比刚才的工厂还完美,但是 有一个问题,该函数没有构造函数,属性是通过prototype指定的,这一点在实际应用中很让人头疼,所有的实例的属性都一样实在是不能让人接受.尤其还存在一个安全隐患,那就是当对象中有引用时,例如 加上这样一段 

obj.prototype.nameArray = new Array("hero","dby");
然后
obj1 = new obj();
obj2 = new obj();
obj1.nameArray.push("lxw");
在obj2的nameArray中将也会看到这个属性,因为两个对象的nameArray指向的是同一个引用.
所以这种方式并不是理想方法.
需要 改进
结合构造函数,在构造函数定义属性,用原型定义方法
例如

fuction obj(name) 
{ 
this.name = name 
this.nameArray = new Array("hero","dby"); 
} 
obj.prototype.showName = function(){alert(this.name)} 

所有的非函数属性都在构造函数里创建,函数属性用prototype方式创建,obj1 中改变nameArray的值,不会影响到obj2对象的nameArray的值, 而且只有一个showName函数,所以没有内存浪费. 

基本上完美了,剩下的基本都是一下其他的修饰了.有兴趣的可以自己改着玩玩.
笔者在这里加上一个单例 玩了一下:

function obj (name) 
{ 
this.name = name; 
this.nameArray=new Array("hero","dby"); 
if(typeof obj._initialized=='undefined') 
{ 
obj.prototype.showName=function(){alert(this.name);} 
obj._initialized="true"; 
} 
} 

其实不算是单例, 只不过是在构造对象的时候,先判断一个属性是否被定义,如果没有定义,那么用原型方法继续定义对象,如果已经定义了属性,那么就不在重复定义函数了. 该prototype方法只被创建一次,病赋值一次. 

又差不多完美了,大功告成 .
这是个人的理解,,希望对大家有帮助,不完善的地方请qq联系,及时改正。
这是一个完整的实例:

function Rectangle(name,color,width,heigth){ 
this.name=name; 
this.color=color; 
this.width=width; 
this.heigth=heigth; 
} 
Rectangle.prototype.area=function(){ 
return this.width*this.heigth 
} 
Rectangle.prototype.show=function(){ 
document.write(this.name+" "+this.color+" "+this.width+" "+this.heigth+"<br/>"); 
document.write(this.area()); 
} 
var obj1= new Rectangle("Rectangle","red",15,20); 
obj1.show(); 

 

转载于:https://www.cnblogs.com/mophy/p/6126803.html

http://www.lbrq.cn/news/1076491.html

相关文章:

  • react做的网站有哪些/商品标题关键词优化
  • 为什么网站开发要用架构/百度爱采购排名
  • 自己建网站 怎么做后台/深圳网络品牌推广公司
  • 北碚网站建设公司/seo页面如何优化
  • wordpress jetpack 3.7.2/哈尔滨seo优化培训
  • 郑州做旅游网站的公司/google play三件套
  • 网站开发系统/百度旗下所有app列表
  • 有哪些网站可以做java题目/谷歌seo培训
  • 婚纱照展示网站源码/做网络销售感觉自己是骗子
  • 长春市做网站推广/seo网站系统
  • 惠州网站建设找惠州邦/百度指数是什么
  • 深圳网站制作哪家负责/网络推广销售是做什么的
  • 网站元素优化 移动站/百度查重软件
  • 建设地方美食网站的目的/百度在线搜索
  • wordpress 站外搜索/关键词优化公司网站
  • 邯郸网站制作哪家好/北京营销公司比较好的
  • 重庆航运建设发展有限公司网站/seo服务加盟
  • 做网站划算还是做app划算/百度推广开户代理商
  • 做黄图网站接广告好赚吗/网络营销方式与工具有哪些
  • 代运营网站建设/营销策划方案1000例
  • 深圳做营销网站公司简介/seo优化厂商
  • 响应式网站建设服务/软文广告500字
  • 辽宁城乡建设集团网站/在哪买网站链接
  • 芜湖网站建设工作室/app运营方案策划
  • 用阿里云服务器做自己购物网站/网站的营销推广
  • wordpress备份网站/广东的seo产品推广服务公司
  • 合肥做企业网站/seo推广需要多少钱
  • 网站建设出现乱码/搜索引擎优化的方法有哪些?
  • 网站建设卩金手指科杰/seo网站推广怎么做
  • 建设网站要先给钱才能做/日本进口yamawa
  • 【计算机网络】Socket网络编程
  • 数据结构初学习、单向链表
  • 2025 年 VSCode 插件离线下载硬核攻略
  • 解决 InputStream 只能读取一次问题
  • ls hgfs提示ls: cannot access ‘hgfs‘: Permission denied
  • 大模型推理引擎总结