JavaScript对象及初识面向对象

在JavaScript中,对象是拥有属性和方法的数据,属性是与对象相关的值,方法是能够在对象上执行的动作。JavaScript是通过一种叫做原型的方式来实现面向对象编程的。(面向对象仅仅是一个概念或者编程思想,它不依赖于某个语言存在。)

一、创建对象

  1、内置对象:常见的有String、Date、Array、Boolean、Math、RegExp

  2、自定义对象

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

      var 对象名称=new Object();  (创建了一个对象)

      对象名称.属性名="属性值";  (给对象添加属性)

      对象名称.方法名=function(){ JavaScript语句}  (给对象添加方法)

    02、字面量赋值法

      var 对象名={  属性名1:属性值1, 属性名2:属性值2, 方法名:function(){ JavaScript语句}  }  (注意属性名和属性值之间用冒号,多个属性之间用逗号--Json格式)

  补充:

       1. 简单对象的创建    使用对象字面量的方式{}  
       2.用function(函数)来模拟class (无参构造函数)
       3.使用工厂方式来创建(Object关键字)
       4.使用原型对象的方式  prototype关键字
       5.混合模式(原型和构造函数)
       6.动态原型的方式(可以看作是混合模式的一种特例)

二、构造函数

  所谓的“构造函数”就是一个普通函数,但是内部使用了this变量,对构造函数使用new操作符,就能生成实例,并且this变量会绑定到在实例对象上

function    Flower(name,genera,area,use){
    this.name=name;
    this.genera= genera;
    this.area=area;
    this.use=uses;
    this.showName=showName;
}
function showName(){
    alert(this.name);
}

 三、原型对象

  在JavaScript中每个对象都有一个prototype属性,这个属性是一个指针,指向原型对象。prototype就是通过调用构造函数而创建的那个对象实例的原型对象。

  在默认情况下,所有原型对象都会自动获得一个constructor(构造函数)属性,这个属性包含一个指向prototype属性所在函数的指针。

四、原型链

   在JavaScript中,每个构造函数都拥有一个原型对象(prototype),原型对象都包含一个指向构造函数的指针(constructor),实例都包含一个指向原型对象的内部指针(_proto_)

function Human(){
    
}
function Woman(){

}
Woman.prototype=new Human();

Woman.prototype等于另一个类型Human的实例,那么此时,原型对象Woman.prototype将包含一个指向原型Human.prototype的指针,如此层层递进,构成了实例与原型的链条,这就是所谓的原型链。

五、借用构造函数

  借用构造函数:就是在子类型构造函数的内部调用父类型构造函数,即在子类型构造函数内部通过apply()或call()方法调用父类型的构造函数

    apply(thisObj,argArry)  call(thisObj,arg1,arg2,arg3.......)区别在于apply只接受两个参数,call却需要把传递给函数的参数全部列举出来

六、组合继承

  有时也叫伪经典继承,其思路是使用原型链实现对原型属性和方法的继承,而通过借用构造函数来实现对实例属性的继承。

function Animal(name,age){
    this.name=name;
    this.age=age
}
function Dog(name,sex,color){
    Animal.call(this,name);//通过借用构造函数,Dog还可以添加自己的属性sex、color
    this.sex=sex;
    this.color=color;
}
Dog.prototype=new Animal();//通过原型链实现对原型属性和方法的继承

 

posted on 2017-11-12 20:14  Vic丶绅士  阅读(148)  评论(0编辑  收藏  举报

导航