JavaScript面向对象

对象是包含相关属性和方法的集合体

什么是面向对象

       面向对象是一种编程思想

       通过叫原型的方式来实现面向对象编程

  创建对象

         自定义对象

               基于Object对象的方式创建对象

               语法:var 对象名称=new Object();

               示例:var person=new  Object();      //创建对象

                         person.name="小明";            //创建对象属性

                         person.showName=function(){        alert(this.name);    }   //创建对象方法

                         person.showName();     //调用对象方法

      使用字面量赋值方式创建对象

            示例:var person={

                             name:"小明",

                             showName:function(){  alert(this.name);        }

                     } 

                     person.showName();

        内置对象

              String对象

              Date对象

              Array对象

构造函数和原型对象    --返回布尔值

       作用:使用接口不需要创建很多对象,减少产生大量的重复代码

       示例:function Person(name,sex,age,hobby){

                  this.name=name;

                  this.sex=sex;

                  this.age=age;

                  this.hobby=hobby;       //创建构造函数

                  this.showName=function(){

                       alert(this.name);

                  }

             }

            //使用构造函数创建对象

            var person1=new Person ("小明","男",18,"看书、看电影、健身、购物等")

            person1.showName();

      使用构造函数的4个步骤
       1.创建一个新对象
       2.将构造函数的作用域赋给新对象(this)
       3.执行构造函数中的代码
       4.返回新对象
       constructor属性  -创建对象得到类型
       示例:alert(person1.constructor==Person);
       instanceof操作符  -检测对象类型
      示例:alert(person1 instanceof  Object);
原型对象
      示例:
               function Person(){
 

               }

               Person.prototype.name="小明";

               var person1=new Person();

               var person2=new Person();

               person1.name="小花";

               alert(person1.name);

               alert(person2.name);

继承

       原型链

        一个原型对象是另一个原型对象的实例

       相关的原型对象层递进,构成了实例与原型的链条,就是原型链

       示例:

                function Humans(){

                    this.foot=2;

                }

                Humans.prototype.getFoot=function(){

                       return this.foot;

                }

               function Man(){

                     this.head=1;

               }

              Man.prototype=new Humans();          //继承了Humans

              Man.prototype.getHead=function(){

                      return this.head;

              }

               var man1=new Man();

               alert(man1.getFoot());                          //2

               alert(man1 instanceof Object);           //true    

              alert(man1 instanceof Humans);        //true

              alert(man1 instanceof Man);

       对象继承

               示例:

                function Humans(){

                 this.clothing=["trousers","dress","jacket"];

               }

                   function Man(){     }

              //继承了Humans

             Man.prototype=new Humans();

             var man1=new Man();

             man1.clothing.push("coat");

             alert(man1.clothing);

             var man2=new Man();

             alert(man2.clothing);

   借用构造函数

apply:应用某一对象的一个方法,用另一个对象替换当前对象
      语法:

              apply([thisObj [,argArray]])

call:调用一个对象的一个方法,以另一个对象替换当前对象
     语法:

             call([thisObj[,arg1[,arg2[,  [,argN]]]]])

     示例:

          function Humans(name){

             this.name=name;

          }

          function Man(){

             Humans.call(this,"mary");   //继承了Humans,同时还传递了参数

              this.age=38;              //实例属性

          }

           var man1=new Man();

           alert(man1.name);       //输出mary

           alert(man1.age);          //输出38

组合继承  -也叫做伪经典继承

       将原型链和借用构造函数的技术组合到一块,发挥二者之长的一种继承模式
       使用原型链实现对原型属性和方法的继承,而通过借用构造函数来实现对实例属性的继承
 
posted @ 2020-06-22 18:55  依溜  阅读(102)  评论(0编辑  收藏  举报