标签:
对象这个词如雷贯耳,同样出名的一句话:XXX语言中一切皆为对象!
对象究竟是什么?什么叫面向对象编程?
对象(object),台湾译作物件,是面向对象(Object Oriented)中的术语,既表示客观世界问题空间(Namespace)中的某个具体的事物,又表示软件系统解空间中的基本元素。
在软件系统中,对象具有唯一的标识符,对象包括属性(Properties)和方法(Methods),属性就是需要记忆的信息,方法就是对象能够提供的服务。在面向对象(Object Oriented)的软件中,对象(Object)是某一个类(Class)的实例(Instance)。 —— 维基百科
对象是从我们现实生活中抽象出来的一个概念,俗话说物以类聚,人以群分,我们也经常说有一类人,他们专业给隔壁家制造惊喜,也就是我们说的老王
这里面就有两个重要概念
对应到计算机术语,类就是class,定义了一些特点(属性 property)和行为(方法 method),比如说给隔壁制造惊喜的这类人有几个特征
同时这些人还有技能(行为)
符合这些特点并且有上述行为能力的,我们称之为老王,从描述我们就可以看出来LaoWang
不是指某个人,而是指一类人,符合上述描述的都可能是老王!用计算机术语说就是每个活蹦乱跳的老王都是类LaoWang
的实例。
因为JavaScript是基于原型(prototype)的,没有类的概念,我们能接触到的都是对象,真正做到了一切皆为对象
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();
标签:
原文地址:http://www.cnblogs.com/mishiyang/p/4805417.html