码迷,mamicode.com
首页 > 编程语言 > 详细

JavaScript面向对象

时间:2015-09-13 19:55:26      阅读:186      评论:0      收藏:0      [点我收藏+]

标签:

理解对象

对象这个词如雷贯耳,同样出名的一句话:XXX语言中一切皆为对象!

对象究竟是什么?什么叫面向对象编程?

对象(object),台湾译作物件,是面向对象(Object Oriented)中的术语,既表示客观世界问题空间(Namespace)中的某个具体的事物,又表示软件系统解空间中的基本元素。

在软件系统中,对象具有唯一的标识符,对象包括属性(Properties)和方法(Methods),属性就是需要记忆的信息,方法就是对象能够提供的服务。在面向对象(Object Oriented)的软件中,对象(Object)是某一个类(Class)的实例(Instance)。 —— 维基百科

对象是从我们现实生活中抽象出来的一个概念,俗话说物以类聚,人以群分,我们也经常说有一类人,他们专业给隔壁家制造惊喜,也就是我们说的老王

这里面就有两个重要概念

  1. 类:无论是物以类聚,还是有一类人,这里说的类并不是实际存在的事物,是一些特征、是一些规则等
  2. 老王:这是个实物,是现实存在,和类的关系就是符合类的描述

对应到计算机术语,类就是class,定义了一些特点(属性 property)和行为(方法 method),比如说给隔壁制造惊喜的这类人有几个特征

  1. 长相文质彬彬,为人和善
  2. 姓王

同时这些人还有技能(行为)

  1. 帮隔壁修下水道
  2. 亲切问候对方儿子

 

符合这些特点并且有上述行为能力的,我们称之为老王,从描述我们就可以看出来LaoWang不是指某个人,而是指一类人,符合上述描述的都可能是老王!用计算机术语说就是每个活蹦乱跳的老王都是类LaoWang实例

 

因为JavaScript是基于原型(prototype)的,没有类的概念,我们能接触到的都是对象,真正做到了一切皆为对象

 

instanceof

instanceof是一个操作符,可以判断对象是否为某个类型的实例

  function Person(nick, age){ this.nick = nick; this.age = age; this.sayName = function(){ console.log(this.nick); } } var p1 = new Person();

p1 instanceof Person; // true
p1 instanceof Object;// true


function Man(name,age){
this.fight = "PK";
//调用父类的构造函数传参
this.constructor(name,age);
//对象冒充法一
// this.inherit = People;
// this.inherit(name,age);
// delete this.inherit;

//对象冒充法二
// People.call(this,name,age);
//对象冒充法三
// People.apply(this,[name,age]);

}
//实现真实继承
Man.prototype = new People();

// People.prototype.qq = "12345";
// var p1 = new People("小胖",18);
// var p2 = new People("小瘦",19);
// p1.age = 25;
// p1.sex = "男";
// alert(p1.name + " "+p1.age +" "+p1.sex+" "+p1.qq+" "+p2.name+" "+p2.age+" "+p2.sex+" "+p2.qq);
// p1.run();
// p2.run();

var m1 = new Man("小胖",18);
var m2 = new Man("瘦瘦",20);
console.log(m1);
console.log(m2);
console.log(m1 instanceof People);
console.log(m1.constructor);
m1.run();

JavaScript面向对象

标签:

原文地址:http://www.cnblogs.com/mishiyang/p/4805417.html

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