码迷,mamicode.com
首页 > Web开发 > 详细

js中的面向对象

时间:2015-09-12 22:18:37      阅读:330      评论:0      收藏:0      [点我收藏+]

标签:

面向对象:不了解原理的情况下,会使用功能。如:电视机,不清楚原理,却知道如何操作。面向对象是一种通用的思想,并非只有在编程使用。面向对象编程简称OOP。

js是一个基于原型的面向对象的编程语言,即每个对象有一个原型对象,对象从原型中继承属性和方法。

js的原型的关系是递归的。即,对象的原型也是一个对象,而原型的本身可能还有一个原型。

js中的对象使用一个new 运算符和一个构造函数来创建

js中可以给对象动态的添加属性和方法

js中创建对象的方法有多种,包括:原型方式,动态原型方式,工厂方式等等

实现继承机制的方式有多种,包括:对象冒充,call(),apply(),原型链等等

 

多用原型来创建对象

prototype对象是个模板,要实例化的对象都以这个模板为基础,总而言之,prototype对象的任何属性和方法都被传递给那个类的所有实例。原型链利用这种功能来实现继承机制

 

 

//构造函数,用来产生对象
  //定义一个对象
  function People(name,age){
  //属性
  this.name = name;
  this.age = age;
  //一个方法
  this.run = function(){
   
   
  alert(this.name + "paopaoapo");
  }
  }
   
  // People.prototype.qq="12345";//给People原型添加属性qq
  // var p1=new People("小明",18);//存储的内存地址
  // p1.age=25;
  // var p2=new People("小明2",19);//p1、p2是两个不同对象 来自同一个原型
  // p1.sex="男";
  // alert(p1.name + " " + p1.age +" " + p1.sex+" "+p1.qq+" " +p2.name + " " + p2.age+" " + p2.sex+" "+p2.qq);
  // p1.run();
  // p2.run();
   
  function Man(name,age){
  this.fight="PK";
  //调用父类的构造函数传参《不需要传参数就可以不用》
  this.constructor(name,age);
  //对象冒充法一
  // this.inherit = People;//模拟继承 调用People函数
  // this.inherit(name,age);//执行People
  // delete this.inherit;//删除inherit属性
  //对象冒充法二
  // People.call(this,name,age);//this表示Man对象
  //对象冒充法三
  // People.apply(this,[name,age]);//this表示Man对象,和call不一样的是传参数方式
  //
  }
  Man.prototype = new People();//Man的prototype<原型>为People 真实继承 原型链
   
  var m1=new Man("大胖",56);
  // m1.run();
  console.log(m1);
  // console.log(m1 instanceof Man);//对象冒充法一二三 真实继承为true
   
  console.log(m1.constructor);
  // 打出function People(name,age){
  // //属性
  // this.name = name;
  // this.age = age;
  // //一个方法
  // this.run = function(){
  // alert(this.name + "paopaoapo");
  // }
  // }
  console.log(m1 instanceof People); //对象冒充法一二三为false 真实继承为true
  // console.log(m1.__proto__.__proto__.__proto__.__proto__);//__proto__和prototype一样的
function Animal(name,age,color){
  this.name = name;
  this.age = age;
  this.color = color;
  }
  function Dog(name,age,color){
  this.dog = "狗狗";
  this.constructor(name,age,color);
  }
  function Cat(name,age,color){
  this.cat = "猫";
  this.constructor(name,age,color);
  }
  Dog.prototype = new Animal();
  Cat.prototype= new Animal();
   
  var d1 = new Dog("狗小黄",2,"green");
  var d2 = new Dog("狗小黄2",22,"green2");
  console.log(d1);
  console.log(d2);

js中的面向对象

标签:

原文地址:http://www.cnblogs.com/yyan/p/4803686.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!