在JavaScript中创建对象

这两天碰上了点儿前台的问题,大脑卡顿,Linux暂时顾不上了,/(ㄒoㄒ)/~~,为了调好程序,阅读了一些js代码,鉴于js就学了最基础的用法,看得迷迷糊糊的,好歹问题调好了,决定来补补js的课。

首先明确第一点:JavaScript中,所有的事物都是对象,字符串啦,数组啦,函数啦,统统都是对象!

第二点:对象拥有自己的属性和方法。

创建对象的方法呢,有以下几种,1是直接创建对象,2是使用构造器,3原型方法,4构造器与原型混合。


直接创建对象的语法是这样的:

car=new Object();
car.color="green";
car.owner="dad";
我创建了一个名叫car的对象,它有两个属性color和owner,创建该对象的方法还可以这么写:

car={color:"green",owner:"dad"};
在创建对象之后通过  对象名.属性名  可以读取指定对象的属性值,也可以通过  对象名.属性名="xxx"  ,为该对象的属性重新赋值,如
alert(car.color);
car.color="red";
alert(car.color);


对象还可以通过构造器来创建,比如:

<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);"></span><pre name="code" class="javascript">function Car(color,owner,users){
	this.color=color;
	this.owner=owner;
	this.users=users;
}
var car=new Car("red","mum","");
alert("car.color: "+car.color+"  car.owner: "+car.owner);
car.users="mum, dad and me";
alert("car.users: "+car.users);

这里 createcar() 就充当了一个构造器,通过 构造器 和 new 操作,我们又一次建立起了对象car,属性的读取、修改、增加操作与之前一样的啦。


对象除了拥有属性外,还可以拥有方法啦,让我们把上一段代码改一下,添加一个方法进去吧:

 

function Car(color,owner,users){
	this.color=color;
	this.owner=owner;
	this.users=users;
	this.getmsg=function(){alert("car.color: "+this.color+"  this.owner: "+this.owner+"  car.users: "+this.users);}
}
var car=new Car("red","mum","mum, dad and me");
car.getmsg();
注意哦,在调用 对象car 的方法 getmsg() 时,不要丢了括号,O(∩_∩)O~~


(~ o ~)~zZ,有没有把你们讲睡着……语言表达能力着实堪忧啊。

话说,第三种创建对象的方法就是原型方法了(第一次见这说法的时候,嗯,不明觉厉)。js里呢,对象都有一个叫做prototype的属性,原型就是指的它啦,与构造器不同,原型只能直接赋值,而不能根据需求传递(就是说,利用原型初始化的属性,其值是写死的,如果需要个性化设置,只能在对象创建后重新赋值)

<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);"><span></span></span><pre name="code" class="javascript">function Car(color,owner,users){
	
}
	
Car.prototype=
{
	color:"white",
	owner:"dad",
	users:"mum, dad and me",
	getcolor:function(){alert("car.color: "+this.color);},
	getowner:function(){alert("car.owner: "+this.owner);},
	getusers:function(){alert("car.users: "+this.users);}
};

var js_test=new Car("","","");
js_test.getcolor();
js_test.getowner();
js_test.getusers();

 

Car.prototype={......} 就是对于原型的定义啦,凭嘛car一定属于dad,凭嘛color一定是white,这样好不方便有木有!!!

于是有了第四种方法,原型与构造器结合的版本,例如:

function Car(color,owner){
	this.color=color;
	this.owner=owner;
}

Car.prototype=
{
	users:"mum, dad and me",
	getcolor:function(){alert("car.color: "+this.color);},
	getowner:function(){alert("car.owner: "+this.owner);},
	getusers:function(){alert("car.users: "+this.users);},
	getmsg:function(){alert("car.color: "+this.color+"  this.owner: "+this.owner+"  car.users: "+this.users)}
};

var js_test=new Car("gray","me");
js_test.getmsg();
据说,通常是“用构造函数定义对象的所有非函数属性(包括普通属性和指向对象的属性),用原型方式定义对象的函数属性(方法)”

再有:

function Car(color,owner){
	this.color=color;
	this.owner=owner;
	this.users="mum, dad and me";
	Car.prototype.getmsg=function(){alert("car.color: "+this.color+"  this.owner: "+this.owner+"  car.users: "+this.users)}
}

var js_test=new Car("gray","me");
js_test.getmsg();
把对原型的定义挪到构造器的里面,据说这样看上去和类更像啦,不过,这样在构造器里定义的原型不能写成   Car.prototype={......}  的样子啦,要写   Car.prototype.属性或方法=......


欧啦,以上就是今天的分享了~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值