什么是面向对象?
首先,先理解一下对象,很多事物都是对象,简单到一整数,复杂到一架飞机,对象是一个整体,对外提供一些操作;那么面向对象就是说,使用对象的时候,你可以直接使用它所提供的功能而忽略其内部组成情况。面对对象不一定只有在编程界里才有,我们生活中无处不在;我的理解是这样的:比如说,你家里的电视机,你使用了遥控,就能操作电视机,但是你实际上不知道这台电视机里面是什么零件组成的,你只要知道,我拿到遥控就可以操作电视机就好了。这就是一种面向对象的思想。
js中的面向对象
1、面向对象编程的特点:
抽象:抓住核心问题
封装:不用考虑内部实现过程,只要考虑功能的使用
继承:从已有对象,继承出新的对象
2、对象的组成
方法:函数--过程、动态的
属性:变量--状态、静态的
-
<script>
-
var a=12;//变量:自由的,不属于任何人
-
-
alert(a);
-
-
var arr=[1,2,3,4,5,6];
-
-
arr.a=12;//属性:属于一个对象的
-
-
alert(arr.a);
-
</script>
/*-----------------------------------------------------------------------------------------------------------------------------*/
-
<script>
-
function aaa()//函数:自由
-
{
-
alert('abc');
-
}
-
-
var arr=[1,2,3,4];
-
-
arr.aaa=function()//方法:属于一个对象
-
{
-
alert('abc');
-
};
-
-
aaa();
-
arr.aaa();
-
</script>
-
写一个面向对象的程序
1、为对象添加属性和方法
-
<script>
-
var arr=[1,2,3,4];
-
-
arr.a=12;
-
-
arr.show=function()
-
{
-
alert(this.a);
-
};
-
-
oDiv.onclick=function()
-
{
-
alert(this);
-
};
-
-
arr.show();
-
</script>
-
//上面的this属于谁?
<
script
>
window
.
show
=
function
()
{
alert
(
this
);
};
show
();
</
script
>
//会弹出什么?
上面的属性和方法都是加在数组对象上的,我们有个原则:不能在系统对象中随意附加方法、属性,否则会覆
已有方法、属性。所以这里,我们利用object来创建新对象:
-
<script>
-
var obj=newObject();
-
-
obj.name='blue';
-
obj.qq='258248832';
-
-
obj.showName=function()
-
{
-
alert('我的名字叫:'+this.name);
-
};
-
obj.showQQ=function()
-
{
-
alert('我的QQ号:'+this.qq);
-
};
-
-
obj.showName();
-
obj.showQQ();
-
</script>
-
obj.name='blue';
-
obj.qq='258248832';
-
-
obj.showName=function()
-
{
-
alert('我的名字叫:'+this.name);
-
};
-
obj.showQQ=function()
-
{
-
alert('我的QQ号:'+this.qq);
-
};
-
-
obj.showName();
-
obj.showQQ();
-
-
var obj2=newObject();
-
-
obj2.name='张三';
-
obj2.qq='5468978546';
-
-
obj2.showName=function()
-
{
-
alert('我的名字叫:'+this.name);
-
};
-
obj2.showQQ=function()
-
{
-
alert('我的QQ号:'+this.qq);
-
};
-
-
obj2.showName();
-
obj2.showQQ();
-
</script>
-
<script>
-
function createPerson(name, qq)//构造函数
-
{
-
var obj=newObject();
-
-
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');
-
-
obj.showName();
-
obj.showQQ();
-
-
var obj2=createPerson('张三','45648979879');
-
-
obj2.showName();
-
obj2.showQQ();
-
</script>