javascript面向对象

来源:互联网 发布:金山卫士 源码 编辑:程序博客网 时间:2024/06/06 17:19

Javascript面向对象

 

Javascript是基于原型的,没有类的概念(ES6有了)。

 

对象需满足:

1.一切事物皆对象;

2.对象具有封装和继承特性;

3.对象与对象之间使用消息通信,各自存在信息隐藏;

 

面向对象编程:以具体的事物为中心,完成某个事件需要哪些事物参与,每个事物都有什么特征(属性)与行为(方法),此时完成事件只是事件功能里的一小部分。

类和对象:
对象是类的实例

类的对象的类型
如何判断所描述是一个类还是一个对象?
如果所有人都能通过描述得到唯一的一个实体,那么就是对象,反之就是类.
js中创建对象的方式有两种
          1.字面量创建对象
          2.构造函数创建对象

面向对象编程的核心是转变考虑问题的方式
          字面量创建对象
          使用字面量创建对象时对象内包含两部分:
          属性和方法,多个属性或者方法之间用","隔开;每一个属性或者方法都有名和值两部分组成 ,两者用":"连接,等价于"="统称为键和值
对象的属性和方法写在大括号内;
      var p1={
          对象的属性:描述对象的特征.
          姓名 年龄性别
          name:"吴创业",
          age:22,
          gender:"女",
          方法:描述对象的行为

          speak:function(){
             alert("哎呦歪");
          }
       };
       创建一个汽车对象
       创建一个手机对象
       var car={
       name:"特斯拉",
       face:"cool",
       autorun:function(){
          alert("人工智能的现实终端");
       },
       };
       var phone={
          name:"智能终端",
          font:"网状超薄",
          love:function(){
             alert("未来不需要npy了,有它就够了");
          }
       };
       
//        如何使用创建好的对象
//        语法:
//        对象名.属性名或者对象名.方法名();*/
//       alert(p1.name);
//       p1.speak();
//       console.log(car.name,car.face);
//       car.autorun();
//       
       创建人对象的函数
       优点:可以将相同的代码只写一遍,减少代码冗余.        
//       function createPerson(name,age,gender,speak){
//          var p1={
//             name:name,
//             age:age,
//             gender:gender,
//             speak:speak
//          };
//          return p1;
//       }
//       var p=createPerson("王宝强",30,"男",function(){
//          alert("我去年买了个表");
//       });
//       var p1=createPerson("傅园慧",29,"女",function(){
//          alert("我游这么快~!");
//       });
//       p.speak();
//       p1.speak();
//       
         
         
          构造函数创建对象
          构造函数的函数名首字母需要大写
          
         function Person(name,age,gender,speak){
            this关键字在构造函数里,代指系统帮我们创建的对象自己.
            this.name=name;
            this.age=age;
            this.gender=gender;
            //this.speak=speak;
         }
         调用构造函数创建函数
         语法
         new 构造函数名(实参1,实参2...);
         
//       var cp=new Person("纷纷",15,"女",function(){
//          alert("死宅真恶心!");
//       });
         var cp=new Person("纷纷",15,"女");
         console.log(cp.name,cp.age,cp.gender);
         cp.speak();
         
          new 关键字的作用:
          1.创建了一个空对象
          2.让这个空对象去调用对应的构造函数,将要赋的值赋上
          3.将赋好值得空对象返回
         
          prototype:每一个函数对象(构造函数),都有一个prototype属性,该属性中存储的是一个原型对象,为原型对象添加的属性或者方法都可以被之后创建的任何一个实例对象所访问,可以帮助我们减少
          内存,但是需要注意为原型对象添加的属性或者方法有一个特点就是所有实例对象对应的属性或方法
          是需要完全相同的.
         Person.prototype.speak=function(){
            alert("哈哈哈");
         }
         cp.speak();
         Person.prototype.type="人";
         console.log(cp.type);
         constructor是原型对象的属性,其存储的是创建对应实例对象时所使用的
         构造函数
         console.log(Person.prototype.constructor);

 

 

最终总结:


封装

1.生成实例对象的原始模式

2.原始模式的改进

3.构造函数模式

4.构造函数模式的问题

5.Prototype模式

6.Prototype模式的验证方法

继承

1.构造函数绑定

2.Prototype模式

3.直接继承prototype

4.利用空对象作为中介

5.拷贝继承

非构造函数的继承

1.什么是非构造函数

2.Object()方法

3.浅拷贝

4.深拷贝

 

 

 

 

 

 

0 0
原创粉丝点击