作者:abc1733974979 | 来源:互联网 | 2021-10-28 20:28
其实,面向对象的思想是独立于编程语言的,例如在C#中,在一个静态类的静态方法中,按照过程式开发调用一系列静态函数,我们很难说这是面向对象的编程,相反,象jquery和extjs这样优秀的Javascript库,却处处体现着面向对象的设计思想。本文不打算探讨Javascript是否能够算做面向对象的编程语言,这个问题是重视中国式考试的人应该关注的,我这里只是简单的说明如何在Javascript中使用面向对象的编程思想。
面向对象首先要有对象。在Javascript中创建一个对象非常简单:
代码如下:
var o={};
这样就产生了一个对象,我们可以很方便的给这个对象添加属性和方法:
代码如下:
o.name="object name";
o.showName=function(){
alert(o.name);
}
不过大多数人还是习惯把对象的属性和方法放在定义对象的一对{}里边:
代码如下:
var o = {
name: "object name",
showName: function() {
alert(o.name);
}
}
访问属性和方法有两种方式,第一种:
代码如下:
alert(o.name);
o.showName();
这种写法很常见,C#中调用对象的属性和方法也是这种方式。还有一种是Javascript中比较特别的,使用属性或者方法的名字作为索引来进行访问:
代码如下:
alert(o["name"]);
o["showName"]();
这好像有点和孔乙己“茴香的茴字有几种写法”差不多了,事实上,很少有人使用索引来调用对象的属性或者方法。
除了我们自定义的属性和方法,我们的对象还有一个constructor属性以及toString()等方法。这些属性和方法是从Object内置对象来的,所有的对象都会有这些属性和方法。其中constructor属性指向构造出该对象的构造函数。我们没有使用构造函数来创建对象,事实上,js的解释器会使用Object构造函数。如果我们自己定义了构造函数,那么便可以通过该构造函数来创建对象,这样可以使得创建的对象具有相同的属性和方法,这便开始有点面向对象的味道了。好,我们从一个简单的例子开始看看如何创建一个构造函数吧:
代码如下:
function Person(name, sex, age) {
this.name = name;
this.sex = sex;
this.age = age;
this.showInfo = function() {
alert("姓名:" + this.name + " 性别:" + this.sex + " 年龄:" + this.age);
}
}
我们定义了一个名字叫Person的构造函数,该构造函数有三个属性和一个方法,通过构造函数来产生一个对象并调用方法也非常简单:
代码如下:
var zhangsan = new Person("张三", "男", 18);
zhangsan.showInfo();
运行后我们可以看到弹出一个对话框,显示出这个叫张三的人的信息:
代码如下: