首页 > 开发 > JS > 正文

浅谈JavaScript中面向对象技术的模拟

2024-09-06 12:44:50
字体:
来源:转载
供稿:网友
一、引言
  在C#和Java语言中,面向对象是以类的方式实现的,特别是继承这个特性,类的方式继承表现出了强大的功能,而且也易于学习。JavaScript不是纯的面向对象的语言,而是基于对象的语言,对象的继承是以原型函数的形式继承的,很多初学者刚开始接触的时候不太理解,但是JavaScript这种以原型函数的形式实现面向对象技术,不仅是可行的,而且还为面向对象技术提供了动态继承的功能,本文主要讨论了JavaScript的面向对象技术。
二、原型对象概述
  每个JavaScript对象都有原型对象,对象都继承原型对象的所有属性。一个对象的原型是由创建该对象的构造函数定义的。JavaScript的所有函数都有一个名为prototype的属性,该属性引用了原型对象,该原型对象初始化的时候只有constructor属性来引用创建该原型对象的对象。JavaScript没有Class定义类的概念,构造函数就定义了类,并初始化类中的属性,每个类的成员都会从原型对象中继承相同的属性,也就是说,原型对象提供了类的实例共享的属性和方法,这就节约了内存。
  当读取一个对象的属性的时候,JavaScript会先从对象中查找,如果没有查找到,才会到原型对象中查找该属性(或方法),所以,尤其是对于方法,最好保存到原型对象中以便于共享,并且达到节省内存的目的,而且原型对象还有一个强大的功能,那就是如果通过构造函数实例化一些对象后,再给构造函数的原型对象增加属性和方法,那么它原来实例化的对象实例将会继承这些增加的属性和方法。
三、对象属性、对象方法、类属性、类方法
  每个对象都会有自己单独的实例属性和实例方法的副本,如果实例化5个对象,那么就会有5个对象的实例属性和实例方法副本。This关键字引用它们的实例对象,也就是说,谁操作了实例方法,this就引用谁;访问了哪个实例对象的属性,this就引用这个实例对象。
  类方法和类属性只有一个副本,类方法调用的时候必须引用类的名字,例如:Date.setHours();
  下面用一个程序来表现实例属性、实例方法、类属性、类方法
代码如下:
 function Mobile(kind,brand) {
      this.kind=kind;//定义手机的种类,例如GSM/CDMA
      this.brand=brand;//定义手机的品牌,this关键字表示用该构造函数实例化之后的对象
  }
  
  /**//*
   定义类的第二步是在构造函数的原型对象中定义它的实例方法或其他属性
   该对象定义的任何属性都将这个类的所有实例继承。
   
   */
   //拨号,这里只是返回电话号码
  Mobile.prototype.dial = function(phoneNo) {
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表