JS---面向对象1

目录

学习内容:

一、概念:

二、面向对象

三、怎么写对象

五、系统对象

六、三大特性


学习内容:

一、概念:

     1.什么是“对象”:

   不了解内部结构,知道表面的操作

     2.什么是“面向对象”:

   不了解原理的情况下,会使用功能

     3.面向对象是一种思想,生活中处处可以应用,万事万物都是对象

二、面向对象

  1.特点:

      (1).封装:

          不考虑内部实现,只考虑功能实现

   人的因素:

   用对象的人

   写对象的人  用封装 把一堆属性和方法集合在一起

      (2).继承:

          目的:最大限度重用代码

          多重继承  慎用

          遗传,龙生龙凤生凤,老鼠的儿子会打洞

      (3).多态:

          表现的形式太弱

      (4).抽象:

          抓住核心问题

          抽:抓

2.组成:

(1)属性:

    变量:就是同一个东西,场景不同,称呼不同

(2)方法: 函数: 阐述同上

3.恶心点:

  This 该方法指向属于谁

  This 占了95%

4.js 中常见对象:

1)Array:数组,用来存储数据

2)data:日期

3)regexp: 正则,用字符串验证

4)object:可以理解为空对象,什么都没有,没意味着什么都可以往上添加

          没有功能

三、怎么写对象

     1.使用object:

Var obj=new object( );

New 出来的一个具体的对象

     2.字面量创建/json:

  写法简易,语法简单,但是重用性低

  适用于整个程序里只有一个的对象

     3.工厂方式

Var obj={ }

工厂方式:
  Function createPerson(name,qq){

     Var obj=new object( );

  }

     4.构造函数创建对象(推荐)

 1) Eg:

 function My(){

            this.age=18;

            this.name="ss"

            this.move=function(){

             

            }      

         }

         var a=new My();

         var b=new My();

   这是一种构造函数

   构造函数就是用来创建对象的

   为了与其它的函数进行区分,我们将函数名的首字母大写

     2)疑问:问什么a.move===b.move弹出的是false?

  5.原型 prototype:

      1)什么是原型:

  公共汽车  js中表示改组对象公用的

      2)类与对象:

             (1)什么是类:模型

                 月饼模子、array、data

            (2)什么是对象:

                 产品、实例

                 月饼、arr=[1,2,3]、data

       3)原型是往类(模型/构造函数)上添加的:

        Array.prototype.sum=function( ){ }

       4)开发常用的模式:

            构造函数加属性,原型加方法

            也就是4+原型

五、系统对象

1.本地(非静态):

Object  array  data  number  boolean  string  function  regexp  error

2.内置(静态):

    Math  你有用过呢哇math( )?

3.宿主:

DOM/BOM 浏览器提供的

六、三大特性

  1.封装:

1)目的:将信息隐藏 以上的行为都属于封装

2)共有、私有:

  其实真的没有私有共有的区别,只是在命名的时候进行一下区分,自己知道这种命名是私有的即可

function(){

            //共有属性

            this.name=name1;

            this.age=age;

            // 私有属性

            var_sex="girl";

            //公有方法

            this.eat=function(){

                alert("吃饭");

            }

            // 私有方法

            var_xiuxiu=function(){

                alert("美图秀秀");

            }

        }

2.继承:

  目的:找到共性,精简代码,提高重用性

【1】

1)属性继承:call( ),apply( )  

     改变父级构造函数内部的this

  Eg:

      Function People(name){

        This.name=name;

        This.say=function( ){

           Alert(“hello”);

        }

         }

         Function student(name){

            People.call(this,name);

         }

2)原型继承:

 B.prototype=A.prototype

   这里有引用的问题

   修改A就会有修改B,修改B就会修改A

3)原型继承(推挤):

      For(var x in A.prototype){

  1. prototype[x]=A.prototype[x];

}

【2】子级对象原型指向父级对象实例

       B.prototype=new A( );

       B.prototype=constructor=B;

     案例:朋友圈

【3】多态(JS中存在感很弱)

   目的:使语言具有动态性,具有更好的通用性

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

羊️里个雲

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值