工厂方式的两个问题----没有new和函数重复

<script>
 function createPerson(name, qq) //构造函数
 {
 //原料
 var obj=new Object();
  
 //加工
 obj.name=name;
 obj.qq=qq;
  
 obj.showName=function ()
 {
 alert('我的名字叫:'+this.name);
 };
 obj.showQQ=function ()
 {
 alert('我的QQ号:'+this.qq);
 };
  
 //出厂
 return obj;
 }
  
 var obj=createPerson('blue', '258248832');
 var obj2=createPerson('张三', '45648979879');
  
 alert(obj.showName==obj2.showName);    //false
 </script>

 1.没有new

  调用函数时,在其前加new,那么this不是指向window,而是指向一个新创建出来的对象。

//系统会悄悄替咱们做:

//var this=new.object();

............

//return this;

2.解决函数重复

需要用到prototype(原型)

CSS                                                                                JS

class:一次给一组元素加样式     >>>>>>>>>>>>>>>>>原型>>>>>>>>

行间样式:一次给一个元素加样式>>>>>>>>>>>>>>>给对象加东西

类:相当于模子

对象:相当于产品(成品)           eg:var arr=Array(1,2,3);   //arr:对象。Array:类。

用构造函数加属性,用原型加方法,如下:

function CreatePerson(name,qq){               //构造函数
                //var obj=new Object();//原料
                //加工
            this.name=name; 
            this.qq=qq;

            //出厂
            //return obj;
            }
            CreatePerson.prototype.showName=function(){     //原型
                alert('我的名字是:'+this.name);
            };
            CreatePerson.prototype.showQQ=function(){
                alert('我的QQ号是:'+this.qq);
            };

总结:

1.原型是class,修改他可以影响一类元素。

2.在已有对象中加入自己的属性。

3.原型修改对已有对象的影响。

4.给对象添加方法,类似于行间样式。

5.给原型添加方法,类似于class。

6.类名首字母大写。

7.不能在系统对象中随意附加方法、属性,否则会覆盖已有方法、属性,因此引入了object对象(白纸)。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值