js-面向对象的概念

什么是面向对象?

首先,先理解一下对象,很多事物都是对象,简单到一整数,复杂到一架飞机,对象是一个整体,对外提供一些操作;那么面向对象就是说,使用对象的时候,你可以直接使用它所提供的功能而忽略其内部组成情况。面对对象不一定只有在编程界里才有,我们生活中无处不在;我的理解是这样的:比如说,你家里的电视机,你使用了遥控,就能操作电视机,但是你实际上不知道这台电视机里面是什么零件组成的,你只要知道,我拿到遥控就可以操作电视机就好了。这就是一种面向对象的思想。

js中的面向对象

1、面向对象编程的特点:

抽象:抓住核心问题

封装:不用考虑内部实现过程,只要考虑功能的使用

继承:从已有对象,继承出新的对象

2、对象的组成

方法:函数--过程、动态的

属性:变量--状态、静态的

  1. <script>
  2. var a=12;//变量:自由的,不属于任何人

  3. alert(a);

  4. var arr=[1,2,3,4,5,6];

  5. arr.a=12;//属性:属于一个对象的

  6. alert(arr.a);
  7. </script>
/*-----------------------------------------------------------------------------------------------------------------------------*/
  1. <script>
  2. function aaa()//函数:自由
  3. {
  4. alert('abc');
  5. }

  6. var arr=[1,2,3,4];

  7. arr.aaa=function()//方法:属于一个对象
  8. {
  9. alert('abc');
  10. };

  11. aaa();
  12. arr.aaa();
  13. </script>

写一个面向对象的程序
1、为对象添加属性和方法
  1. <script>
  2. var arr=[1,2,3,4];

  3. arr.a=12;

  4. arr.show=function()
  5. {
  6. alert(this.a);
  7. };

  8. oDiv.onclick=function()
  9. {
  10. alert(this);
  11. };

  12. arr.show();
  13. </script>
  14. //上面的this属于谁?
2、 this 详解,事件处理中 this 的本质
< script >
window . show = function ()
{
alert ( this );
};
show ();
</ script >
//会弹出什么?
上面的属性和方法都是加在数组对象上的,我们有个原则:不能在系统对象中随意附加方法、属性,否则会覆
已有方法、属性。所以这里,我们利用object来创建新对象:
  1. <script>
  2. var obj=newObject();

  3. obj.name='blue';
  4. obj.qq='258248832';

  5. obj.showName=function()
  6. {
  7. alert('我的名字叫:'+this.name);
  8. };
  9. obj.showQQ=function()
  10. {
  11. alert('我的QQ号:'+this.qq);
  12. };

  13. obj.showName();
  14. obj.showQQ();
  15. </script>
如果有两个对象的情况;则
  1. obj.name='blue';
  2. obj.qq='258248832';

  3. obj.showName=function()
  4. {
  5. alert('我的名字叫:'+this.name);
  6. };
  7. obj.showQQ=function()
  8. {
  9. alert('我的QQ号:'+this.qq);
  10. };

  11. obj.showName();
  12. obj.showQQ();

  13. var obj2=newObject();

  14. obj2.name='张三';
  15. obj2.qq='5468978546';

  16. obj2.showName=function()
  17. {
  18. alert('我的名字叫:'+this.name);
  19. };
  20. obj2.showQQ=function()
  21. {
  22. alert('我的QQ号:'+this.qq);
  23. };

  24. obj2.showName();
  25. obj2.showQQ();
  26. </script>
上面的写法虽然没有问题,但是代码冗余,改进一下:构建函数(该函数的功能是构建对象)

  1. <script>
  2. function createPerson(name, qq)//构造函数
  3. {
  4. var obj=newObject();

  5. obj.name=name;
  6. obj.qq=qq;

  7. obj.showName=function()
  8. {
  9. alert('我的名字叫:'+this.name);
  10. };
  11. obj.showQQ=function()
  12. {
  13. alert('我的QQ号:'+this.qq);
  14. };

  15. return obj;
  16. }

  17. var obj=createPerson('blue','258248832');

  18. obj.showName();
  19. obj.showQQ();

  20. var obj2=createPerson('张三','45648979879');

  21. obj2.showName();
  22. obj2.showQQ();
  23. </script>








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值