js:面向对象编程

----- javasrcipt中没有类的概念,面向对象的一切都需操作对象。

----- js中所有的对象都是就Object延伸而来。

一,以下是创建对象的几种方法

1,使用Object定义对像的属性与方法

这种方法操作对像的缺点在于,如果要生成多个需要使用同样的语法创建对象

有以下几种方式:

 

var obj=new Object();
obj.username="zxd";
obj.password="123";
obj.test=function(){
             alert(this.username+""+this.password);          
}

 

var obj=new Object();
obj["username"]="张三";
obj["password"]="123";
obj["test"]=function(){};
var obj={
username:"张三",
password:"123",
test":function(){
     }
};

2,通过工厂方式配合单独函数创建对象

这种方式定义解决了之前的所有问题,但是这种创建对象的方式使得在创建对象的过程中函数与属性分开了,使得代码不太好管理。

function test(){
          alert(this.username+""+this.password);  
}
function createObj(username,password){
           var obj=new Object();
           obj.username=username;
           obj.password=password;
           obj.test=test;
           return obj;  
}
var obj=createObj("abc","abc");
      obj.test();

3,构造函数的方式创建对象

通过构造函数的方式创建对象,的优点在于不在需要Object,也不需要reutrn返回,实际上构造函数的方式创建对象,在函数中会隐含一个return来返回对象。

缺点:但是使用构造函数创建对象与之前工厂模式一样,也存在着重复创建函数的问题,当然也可以像之前一样把函数定义在外部。

function person(username,password){
        this.username=username;
        this.password=password;
        this.get=function(){
                alert(this.username+""+this.password);
        }  
}
var obj1=new person("asd","123");
var obj2=new person("dsa","353");

obj.get();
obj.get();

4,原型方式创建对象

function person(){

}
person.prototype.username=new Array("aad","ada");
person.prototype.passwrod="123";
person.priototype.test=function(){
    alert(this.username+""+this.password);
}
var obj1=new person();
var obj2=new person();
obj1.username.push("three");
obj1.test();
obj2.test();

5,构造函数与原型混合使用创建对象

这种方式解决了构造函数与原型方式的不足,是比较理想的一种创建对象的方式。

function person(username,pasword){
      this.uername=username;
      this.password=password;
  
}
person.prototype.get=function(){
      alert(this.username+""+this.password);
}
var obj1=new person("aa","232");
var obj2=new person("ddd","343");
obj1.get();
obj2.get();

 

转载于:https://www.cnblogs.com/dybe/p/8075867.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值