js面向对象

关于js面向对象的几点想分享一下
首先什么是对象呢? 对象是属性+方法

1.创造对象的几种方式

<1>工厂模式

function createPerson(name){
   var obj=new Object();
   obj.name=name;
   obj.showname=function(){
    alert(this.name);
    }
    return obj;
    }
   var p1=createPerson ("wang");
   p1.showname();

用 new 创造对象时要大写,同时看清里面的this 指代的是哪个对象。为什么叫工厂模式呢? 其中创造对象称为准备原料,给对象设置属性和方法称为加工,最后返回对象称为出厂。

<2>构造函数模式

function CreatePerson(name){
  this.name=name;
  this.showname=function()
  {
    alert(this.name);
    }
    }
    var p1=new CreatePerson("wang");
    p1.showname();

其中构造函数模式是工厂模式的升级,他把new 移到外面,用 new 出来的构造函数里面有一个this对象,和工厂模式obj差不多,还有里面的this是隐式返回的,不需要写return 返回。构造函数为什么要大写?这个我认为这是向系统对象靠拢。

3.对于一般的基本类型如变量字符串,赋值语句即是引用,只会改变值,对于对象而言,赋值语句不仅是值的赋值,也是引用的传递,也就是地址共用。

var a=[1,2,3];
var b=a;
b.push(4);
alert(a);//a=[1,2,3,4]
alert(b);//b=[1,2,3,4]



var a=[1,2,3];
var b=a;
b=[1,2,3,4];
alert(a);//a=[1,2,3]
alert(b);//a=[1,2,3,4]

4.原型作用就是让创建的很多对象相同的方法或属性在内存中只存在一份,去改写对象共用的方法或属性。原型相当于css中的class,上面两种方法相当于css 中的style,首先是优先级,然后是可以复用。原型写在构造函数下面。

function CreatePerson(name){
  this.name=name;
    }
 CreatePerson.prototype.showname=function()
 {
     alert(this.name);
  }   
    var p1=new CreatePerson("wang");
    p1.showname();

其中变的东西不能写在原型上。

最后总结一下面向对象的基本写法:

function 构造函数()
{
  this.属性=  ;
  }
   构造函数.prototype.方法=function()
   {
   }
   var 变量=new 构造函数();
   变量.方法;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值