`
01robert
  • 浏览: 73208 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

关于javascript中面向对象的功能:类、子类

阅读更多

很早以前就听说javascript是面向对象的,但一真没搞清楚到底是怎么回事,以为因为它支持DHTML  中的DOM,可以对对象进行圈套调用的原因。呆在北京也有一个多星期了,暂时没分配什么具体的任务,就自己瞎折腾看看Trakcare的使用。因为是BS开发,就涉及到了javascript. 无意中发现javascript中的function 其实就是一个类,一下子就明白了为什么说它是面向对象的了。
在网上用百度搜索了一下,类是怎么定义的算是弄明白了,但子类怎样继承父类却搜索不到相关的资料,想不到在浩翰的汉字海洋里,居然没的我要找的东东.在CSDN上发个贴子,回答的人很涌跃,却没人真正清楚。我就只好用Google了,第一个页站就是答案。.

说明问题:
1.在浩翰的汉字海洋里,我们的技术文档落后别人五年。很多的技术文档都没翻译为中文,学习稍微新一点的知识我们必须看国外的文档。
2. 以前用Google时,总觉得英文的关键词不好使。少用关键字吧,总搜出太多没用的东东,多用关键字吧,又怕自己拼的不对,一个也找不到。不像汉字,自己想怎么组合就怎么组合。其实搜文档就应该用google.


// 1. 定义类
function MyClass(para1){
 this.name=""; 
 this.attribute1="something"; //属性
 if (arguments.length>0)
  {this.init(para1);
  }
 this.DynamicMethod1; //用于外部实现的方法
 this.function1=function(para1, para2){  //方法
  alert("Function1 invoked para1=" +para1 + " para2 =" + para2);
 }
}
MyClass.prototype.ProDynamicMethod=ProtoDynamicImpl; //类的静态方法
MyClass.prototype.init=function(para1){ // 增加新的方法
 this.name=para1;
}
MyClass.prototype.toString=function(){
 return "name = " +this.name;
}
if (MyClass.prototype.invokeCount==null)
 MyClass.prototype.invokeCount==0;


//2. 定义字类
MyChildClass.prototype=new MyClass(); // 将MyClass 加在Child类的父类链上
MyChildClass.constructor=MyChildClass; //将contructor由MyClass改为自己
MyChildClass.superClass=MyClass.prototype; //加此方法是为了在子类同父类的方法冲突时,可通过superclass来调用像父
function MyChildClass(para1,para2){
 if (arguments.length>0){
  MyChildClass.superClass.init.call(this,para1);
  this.init(para2);
 }
}
MyChildClass.prototype.init=function(para1){
 this.lastName=para1;
}
MyChildClass.prototype.toString=function(){
 return MyChildClass.superClass.toString.call(this)+"  lastname=" + this.lastName;
}


//3. 调用:
function ClassInvoke()
{
myObj=new MyClass("robert");
myObj.attribute1="other something";
myObj.function1("haha","hehe");  //方法调用
myObj.DynamicMethod1=DynamicImpl; //给方法打实现
myObj.DynamicMethod1("this is showed by DynamicImpl!"); //具体调用
alert(myObj);

MyClass.prototype.invokeCount++;  //类的静态属性
MyClass.prototype.ProDynamicMethod("this is showed by prototypeDynamicImpl!")
myObj.ProDynamicMethod("myObj.ProDynamicMethod invoked!");
//其实可用prototype对类进行扩展,包括对其固有类进行扩展

myChildObj=new MyChildClass("robert2","alxandra");
alert("myChildObj.attribute1 = "+ myChildObj);
myChildObj.function1("invoked in childclass", "ok?");
}
//reference: http://www.kevlindev.com/tutorials/javascript/inheritance/

关于prototype:
Every JavaScript object has a prototype property. This property is what makes OOP possible in JavaScript, but it is a bit unusual if you come from other OO languages. Here's how it works. When you access an object property, the interpreter will look at the current object's properties to see if one by that name exists. If the name does not exist there, then the interpreter looks at the prototype property of the object to see if that object, the one pointed to by the prototype property, has the named property. If there is no property there, then the interpreter looks to see if the prototype property has a prototype property. If it does, then this process continues until either the property is found or until there are no more prototype properties to search.




分享到:
评论

相关推荐

    Javascript 面向对象的JavaScript进阶

    ### JavaScript面向对象进阶知识点详解 #### 8.1 面向对象编程的基本特性 在探讨面向对象的JavaScript之前,我们首先需要了解面向对象编程(Object-Oriented Programming, OOP)的基本特性:封装性、抽象性、继承...

    面向对象JavaScript精要(英文原版pdf)

    作者深入浅出地介绍了面向对象编程的基本原理以及如何将这些原理应用于JavaScript中。 #### 二、面向对象编程基础 面向对象编程(OOP)是一种软件开发方法,它通过将数据和处理这些数据的方法捆绑在一起形成“对象”...

    Javascript面向对象编程.

    在提供的资源中,《代码之美》PDF文件可能包含了关于编程实践和代码风格的指导,而《Javascript面向对象编程》PPT可能更具体地阐述了JavaScript OOP的细节和示例。学习这些材料将有助于深入理解JavaScript的面向对象...

    javascript 经典面向对象设计

    标题“JavaScript经典面向对象设计”指出了本书的主要内容是关于如何使用面向对象编程(OOP)原则和技术来编写高质量、可扩展且可重用的JavaScript应用程序及库。描述中提到本书相比其他中文资料更为清晰,深入到...

    面向对象javascript

    在JavaScript中,我们可以使用函数对象来实现面向对象的编程。函数对象可以作为值赋给变量、作为参数传递给另一个函数、或作为其它函数的返回值。 在JavaScript中,我们可以使用prototype链来实现继承。prototype链...

    javascript面向对象

    本文旨在深入解析JavaScript面向对象编程的基础,包括对象的基本概念、类与对象的关系、对象的属性与方法、封装、继承与多态,以及JavaScript中对象的实现方式。 #### 对象的基本概念 面向对象编程的核心在于对...

    JavaScript面向对象编程指南

    JavaScript是一种广泛应用于Web开发的动态编程语言,尤其在构建交互式网页和富互联网应用...《JavaScript面向对象编程指南》这本书将帮助你进一步探索这个主题,通过实例和详细的解释,提升你的JavaScript编程技能。

    JavaScript 面向对象编程详细讲解文档

    总的来说,JavaScript的面向对象编程依赖于对象、原型和继承来实现类的功能。通过理解和熟练运用这些概念,开发者可以在JavaScript中构建复杂、可维护的系统,同时避免命名冲突问题。虽然JavaScript的面向对象模型与...

    第15章 javascript面向对象与原型

    在深入讲解JavaScript面向对象与原型的知识点之前,首先需要了解JavaScript的基础知识。在JavaScript中,面向对象编程(OOP)的概念虽然存在,但是它的实现与传统基于类的语言有所不同。ECMAScript,也就是...

    JavaScript面向对象精要(英文版)

    《JavaScript面向对象精要》这本书不仅介绍了JavaScript面向对象的基础概念,还深入探讨了其实现机制及其在实际开发中的应用。对于希望提高自己JavaScript技能水平的开发者来说,本书是一本不可多得的好书。通过学习...

    JavaScript面向对象编程指南 pdf

    下面将详细探讨JavaScript面向对象编程的基本原理、特性以及实际应用。 1. **类与对象** - 在JavaScript中,对象是键值对的集合,可以通过字面量语法或构造函数创建。例如: ```javascript const person = { ...

    JavaScript面向对象高级编程

    ### JavaScript面向对象高级编程知识点概述 #### 面向对象编程(OOP) 1. **继承**:继承是OOP的核心概念之一,它允许我们创建一个类,该类继承了另一个类的属性和方法。继承机制是实现代码重用和创建类之间层次结构...

    JavaScript面向对象编程指南.pdf

    根据提供的文件信息,我们将重点放在面向对象编程(OOP)在JavaScript中的应用上。JavaScript作为一种广泛使用的脚本语言,不仅在浏览器环境中发挥着重要作用,在服务器端开发(如Node.js)及桌面应用程序开发等领域也...

    javascript面向对象编程

    JavaScript是一种广泛应用于Web开发的动态、弱类型、基于原型的脚本语言,它不仅支持函数式编程,还具有强大的面向对象编程能力...通过阅读《javascript面向对象编程.pdf》这样的资料,你可以深入理解并掌握这些概念。

    Javascript实现面向对象技术PPT 超牛 不看后悔

    在JavaScript中,由于它原生并不支持类,而是通过原型(Prototype)机制来实现面向对象特性。然而,ES6(ECMAScript 2015)引入了类语法,使得JavaScript的面向对象更加接近传统的面向对象语言。 1. 类与对象:在...

    Javascript 中的面向对象编程

    在面向对象编程中,我们找到了一种将对象关联起来的方法,也就是说,我们将父对象(类)与其子对象(子类)相关联,或者将父对象与另一个父对象相关联。例如,动物是一个物体,动物可以吃、可以动、可以睡觉。我们...

    基于闭包的JavaScript面向对象编程框架.pdf

    本文提供了基于闭包的JavaScript面向对象编程框架的设计和实现,展示了闭包在JavaScript中实现基于类的面向对象编程的可能性。 知识点: 1. 闭包(Closure)是一种JavaScript编程技术,用于实现基于类的面向对象...

    老生常谈javascript的面向对象思想

    以上知识点详细介绍了JavaScript面向对象编程中的基本特性、对象的定义方式以及如何通过不同方式实现封装、继承和多态。通过深入理解这些概念,可以帮助开发者更加高效和规范地进行JavaScript编程,编写出更加优雅...

Global site tag (gtag.js) - Google Analytics