js原型模式

	<h1>语言之魂——原型模式</h1>
	<p>原型模式(Prototype):用原型实例指向创建对象的类,是用于创建新的对象的类共享源性对象的属性与方法。</p>
	<script>
	   //图片轮播
	   var  LoopImages = function( imgArr, container ){
	      this.imgArr = imgArr;             //轮播图片的数组
	      this.container = container;       //轮播图片的容器
	   };
	   LoopImages.prototype = {
	      //创建轮播图片
	      createImage: function(){
	         console.log( "LoopImage createImage function" );
	      },
	      //切换下一张图片
	      changeImage: function(){
	         console.log( "LoopImage changeImage function" );
	      }
	   };
	  //上下滑动切换类
	  var SlideLoopImg = function( imgArr, container ){
	      //构造函数继承图片轮播
	      LoopImages.call( this, imgArr, container );
	  };
	  SlideLoopImg.prototype = new LoopImages();
	 //重写继承的切换一下一张图片方法
	 SlideLoopImg.prototype.changeImage = function(){
	    console.log( "SlideLoopImage changeImage function" );
	 }
	</script>
	<p>原型的拓展:原型对象时一个共享对象,那么不论是父类的实例对象或者子类的继承,都是对她的一个指向引用,所以原型对象才会被共享。既然被共享,那么对源性对象的拓展,不论是子类或者父类的实例对象都会继承下来。</p>
	<p>原型继承:不过原型模式更多是用在对对象的创建上。比如创建一个实例对象的构造函数比较复杂,或者耗时比较长,或者创建多个对象来实现。此时我们最好不要用new 关键字去复制这些基类,但可以通过对这些对象属性或方法进行复制来实现创建,这是原型模式的最初思想。
	如果涉及多个对象,我们也可以通过原型模式来实现对新对象的创建。那么首先就要有个原型模式的对象复制方法。</p>
	<script>
	   /**
	   基于已经存在的模板对象克隆出新对象的模式
	   arguments[0]、arguments[1]参数表示模板对象
	   注意:这里对模板对象引用类型的属性实质上进行了浅复制(引用类型属性共享),当然可以根据需求自行进行深复制   
	   */
	   var propertyExtend = function(){
	     var F = function(){},        //缓存类,为实例化返回对象临时创建  
	         args = arguments,        //模板对象参数序列
	         i = 0,
	         len = args.length;
         for( ; i< len; i++ ){
            //遍历每个模板对象中的属性
            for( var j in args[ i ] ){
               //将这些属性复制缓存到缓存类原型中
               F.prototype[ j ] = args[ i ][ j ]
            }
         }
         //返回缓存类的实例
         return new F();
	   }
      </script>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值