JavaScript中对象的定义方式

JavaScript中对象的定义方式

在JavaScript中是没有类的概念的,只有对象。无论是字符串,数值,数组还是函数,其本质都是对象。此外,JavaScript是允许自定义对象。什么是对象呢?简而言之,对象是带有属性和方法的特殊数据类型。以下是几种常用的对象定义方式。

1、基于已有对象扩充其属性和方法
简单的创建一个对象,然后动态地为其增加属性和方法。
var object=new Object();
object.name=“zhangsan”;
object.sayName=function()
{
this.name=name;
}
object.sayName(“lisi”);

2、构造函数方式
使用构造函数方式时,JavaScript引擎会在第一行代码执行前为我们生成一个对象,同时含有一个隐藏的return语句,将生成的对象返回。因此,在函数体内,无需显性地声明。
function Person(){
//在执行第一行代码前,js自动生成一个对象
this.username = “zhangsan”;
this.password = “123”;
this.get = function(){
return (this.username+","+this.password);
}
//隐藏的return语句,将生成的对象返回
}
var person = new Person();
person.get();
同理,也可以将其改为可传递参数的构造函数。

3、使用原型(prototype)方式
单纯使用原型方式定义对象无法在构造函数中为属性赋初值,只能在对象生成后再去改变属性值。
function Person()
{
}

Person.prototype.username = "zhangsan";
Person.prototype.password = "123";
person.prototype.get = function(){
    return (this.username+","+this.password);
}

var person = new Person();
person.username = "lisi";
person.password = "456";
person.get();

如果使用原型方式对象,那么生成的所有对象会共享原型中的属性,这样一个对象改变了该属性也会反映到其他对象当中。可以使用原型+构造函数方式来解决这个问题,使对象之间的属性互不干扰,各个对象间共享同一个方法。这也是推荐使用的方法
function Person()
{
this.username = new Array();
this.password = “”;
}

Person.prototype.get = function()
{
    return (this.username+","+this.password);
}

var p1 = new Person();
var p2 = new Person();

p1.username.push("zhangsan");
p1.password = "123";

p2.username.push("lisi");
p2.password = "456";

p1.get();
p2.get();

5、动态原型方式
在构造函数中,通过标志量让所有对象共享一个方法,而每个对象都拥有自己的属性。
function Person()
{
this.username = “zhangsan”;
this.password = “123”;

   if(typeof Person.flag == "undefined")
   {
       Person.prototype.get = function()
       {
           return (this.username+","+this.password);
        }
       Person.flag = true;
   }
}
var p1 = new Person();
var p2 = new Person();
p1.get();
p2.get();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值