【www.gdgbn.com--js教程】


<script>
//定义js的user对象
function user(name,age){
this.name=name,
this.age=age,
this.getname=function(){
return this.name;
},
this.getage=function(){
return this.age;
}
}
//实例化一个对象
var use=new user("aa",21);
alert(use.name);
alert(use.getage());
//js对象继承
/*
111cn.net 在面向对象的编程方法中,对象继承是必不可少的,那么怎么在网页特效中实现继承机制呢。由于javascript并不是一个严格的面向对象的语言,因此在对象继承上也显的不一样。我们也来创建一个基类polygon,代表一个多边形,一个多边形有个共同的属性就是边数(sides)和一个共同的方法计算面积(getareas)。这样我们的这具polygon类看起来就像下面这样定义:
*/
function polygon(isides){
this.sides = isides;
}
polygon.prototype.getareas = function(){
return 0;
}
/*
因为基类并不能确定面积,因此在这里我们返回为0。
接着我们就创建一个子类triangle,一个三角形,显然这个三角形是要从多边形继承的,因此我们要让这个triangle类继承polygon类,并且要覆盖polygon类的getareas方法来返回三角形的面积。我们来看下在javascript中的实现:
*/
function triangle(ibase, iheight){
polygon.call(this,3); //在这里我们用polygon.call()来调用polygon的构造函数,并将3作为参数,表示这是一个三角形,因为边是确定的,所以在子类的构造函数中就不需要指定边了
this.base = ibase; //三角形的底
this.height = iheight; //三角形的高
}
triangle.prototype = new polygon();
triangle.prototype.getareas = function(){
return 0.5 * this.base *this.height; //覆盖基类的getareas方法,返回三角形的面积
}

/*
参考上面的实现,我们再定义一个矩形:
*/
function rectangle(iwidth, iheight){
polygon.call(this,4);
this.width = iwidth;
this.height = iheight;
}
rectangle.prototype = new polygon();
rectangle.prototype.getareas = function(){
return this.width * this.height;
}
/*
好了,上面我们定义了一个基类和两个子数,下面我们来测试一个这两个子类是否能正常工作:
*/
var t = new triangle(3,6);
var r = new rectangle(4,5);
alert(t.getareas()); //输出9说明正确
alert(r.getareas()); //输出20说明正确
</script>

构造函数具有如下两个特性,其本质仍然是javascript函数:

它由new运算符调用

传递给它的是一个对新创建的空对象的引用,将该引用作为关键字this的值,而且它还要对新创建的对象进行适当的初始化

定义构造函数,
  function user(name,age)
  {
     this.name = name;
     this.age    = age;
 }

 //实例化两个对象
 var simaopig = new user("simaopig","25");
 var xiaoxiaozi = new user("xiaoxiaozi","25");

 

拟javascript中类和继承
在面向对象的语言中,我们使用类来创建一个自定义对象。然而javascript中所有事物都是对象,那么用什么办法来创建自定义对象呢?

这就需要引入另外一个概念 - 原型(prototype),我们可以简单的把prototype看做是一个模版,新创建的自定义对象都是这个模版(prototype)的一个拷贝 (实际上不是拷贝而是链接,只不过这种链接是不可见,给人们的感觉好像是拷贝)。

让我们看一下通过prototype创建自定义对象的一个例子:

// 构造函数
   function person(name, sex) {
       this.name = name;
       this.sex = sex;
   }
   // 定义person的原型,原型中的属性可以被自定义对象引用
   person.prototype = {
       getname: function() {
           return this.name;
       },
       getsex: function() {
           return this.sex;
       }
   }
  
这里我们把函数person称为构造函数,也就是创建自定义对象的函数。可以看出,javascript通过构造函数和原型的方式模拟实现了类的功能。
创建自定义对象(实例化类)的代码:


var zhang = new person("zhangsan", "man");
console.log(zhang.getname()); // "zhangsan"
var chun = new person("chunhua", "woman");
console.log(chun.getname()); // "chunhua"


如何在javascript中实现简单的继承?
下面的例子将创建一个雇员类employee,它从person继承了原型prototype中的所有属性。


function employee(name, sex, employeeid) {
    this.name = name;
    this.sex = sex;
    this.employeeid = employeeid;
}
// 将employee的原型指向person的一个实例
// 因为person的实例可以调用person原型中的方法, 所以employee的实例也可以调用person原型中的所有属性。
employee.prototype = new person();
employee.prototype.getemployeeid = function() {
    return this.employeeid;
};
var zhang = new employee("zhangsan", "man", "1234");
console.log(zhang.getname()); // "zhangsan

本文来源:http://www.gdgbn.com/wangyezhizuo/28278/