`
titan
  • 浏览: 113708 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

JavaScript和java的面向对象1

阅读更多

 
 
 这里的JavaScript,主要是指ECMAScript。Java大致基于1.5版本。这篇文章比较用JavaScript来实现OO与用java来实现的差异性。
 
 第一节 面向对象的能力
 
  判定一种语言是否具有支持OO,看要它是否具备OO的四个基本特性:
  1. 封装
  2.  聚合
  3. 继承
  4. 多态
  ECMAScript是支持这些要求的.java当然也支持。因此可以认为ECMAScript支持OO,java亦然。
  
 
  ECMAScript 对于对象的理解为“属性的无序集合,每个属性存放一个原始值、对象或函数”,可以认为在ECMAScript中的对象完全
  由多个属性构成,如果这个属性存放的值是函数,就认为它是对象方法。而且在ECMAScript中对象没有显式的“类”定义,对象的定义实际上就是对象自身。
  ECMAScript只有一种访问作用域public. ECMAScript不支持静态作用
  
  Java的对象是具有类定义,类有方法,属性,还有静态,和访问作用域(public ,private, protected)。java支持静态作用域
  
  早绑定与晚绑定
  所谓绑定,是把对象的接口和对象实例结合在一起的方法。
  早绑定,是在实例化对象之前定义它的特性与方法,编译器或解释程序就能提前转为机器代码。java是属于早绑定
  晚绑定,是编译器和解释程序在运行前,不知道对象的类型。ECMAScript的所有变量采用晚绑定。
  
 第二节 定义类或对象
  ECMAScript定义类或对象的有几种:
  工厂方法  提供能创建并返回特定类型对象的工厂函数
       function createCar(sColor, iDoors, iMpg){
        var oTempCar = new Object;
        oTempCar.color = sColor;
        oTempCar.doors = iDoors;
        oTempCar.mpg = iMpg;
        oTempCar.showColor = function (){
         alert(this.color);
        };
        return oTempCar;
       }
       varCar1 = createCar("red", 4, 23);
  
  构造函数方式 第一步选择类名,即构造函数的名字,根据惯例这个构造函数的首字母大写。
       function Car(sColor, iDoors, iMpg){
        
        this.color = sColor;
        this.doors = iDoors;
        this.mpg = iMpg;
        this.showColor = function (){
         alert(this.color);
        };
        
       }
       var oCar1 = new Car("red", 4, 23);
  
  原型方式 该方式利用对象的prototyppe属性
       function Car(){
       }
       Car.prototype.color = "red";
       Car.prototype.doors = 4;
       Car.prototype.mpg = 23;
       Car.prototype.showColor = function (){
         alert(this.color);
       };
             
       var oCar1 = new Car();
   
  混合构造函数/原型方式 利用构造函数方式来定义对象的所有非函数属性,利用原型方式来定义
        对象的函数属性(这种方式是开发者采取的主要方式)
       function Car(sColor, iDoors, iMpg){
        
        this.color = sColor;
        this.doors = iDoors;
        this.mpg = iMpg;
        
        
       }
       Car.prototype.showColor = function (){
         alert(this.color);
       };
       var oCar1 = new Car("red", 4, 23);
  动态原型方式 对于对象的函数和属性进行完全的封装到构造函数中
       
       function Car(sColor, iDoors, iMpg){
        
        this.color = sColor;
        this.doors = iDoors;
        this.mpg = iMpg;
        
        if(typeof Car._initialized=="undefined"){
         Car.prototype.showColor = function (){
          alert(this.color);
         };
         Car._initialized = true;
        }
       }
       
       var oCar1 = new Car("red", 4, 23);
  混合工厂方式 这种方式是不能应用前一种方式的变通方法。通过提供假构造函数,返回另一种对象的新实例。
       function Car(sColor, iDoors, iMpg){
        var oTempCar = new Object;
        oTempCar.color = sColor;
        oTempCar.doors = iDoors;
        oTempCar.mpg = iMpg;
        oTempCar.showColor = function (){
         alert(this.color);
        };
        return oTempCar;
       }
       varCar1 = new Car("red", 4, 23);
     
  
  采用那种方式
   
   目前广泛使用的是构造函数/原型方式。动态原型方法也很流行,功能上与构造函数/原型等价
   
  Java定义类/对象的方式
  
    Java采用严格的类声明方式
    Class Car {
     private String color;
    
     public String showColor(){
      ...
     }
    }
  
   还有一种在特殊方式,用在产生interface和abstract类的实例,即匿名类方式。
   
  第三节 修改对象定义
    
   这个功能是ECMAScript具有,而java不具有的能力。
   
   创建新方法
     可以使用Prototype属性为任何已有的类定义新方法。
     
     Number.prototype.toHexString = funtion (){
      return this.toString(16);
     };
 
   重定义已有方法
     同定义新方法一样,也可以重定义已有的方法。函数名只是指向函数的指针,因此可以轻易的使它指向其他函数。
     
     Function.prototype.toString = function (){
      return "Function code hidden";
     };
     function sayHi() {
      alert("hi");
     }
    
     alert(SayHi.toString());
     
  极晚绑定
   这是一种现象,能够在对象实例化后再定义其方法。应该尽量少用。

分享到:
评论

相关推荐

    习题解答-Java面向对象程序设计-邢国波-清华大学出版社.pdf

    邢国波的《Java面向对象程序设计》一书旨在帮助读者理解和掌握Java语言的核心特性,特别是面向对象编程的概念。以下是根据提供的内容和标签提炼出的一些关键知识点: 1. **Java的特点**: - **跨平台性**:Java...

    Javascript 面向对象的JavaScript进阶

    在探讨面向对象的JavaScript之前,我们首先需要了解面向对象编程(Object-Oriented Programming, OOP)的基本特性:封装性、抽象性、继承性和多态性。 ##### 8.1.1 封装性 **定义:** 封装性是面向对象编程的一个...

    猜拳游戏:java面向对象,kotlin面向对象,js面向对象,3个方法开发.zip.lnk

    猜拳游戏:java面向对象,kotlin面向对象,js面向对象,3个方法开发.zip.lnk猜拳游戏:java面向对象,kotlin面向对象,js面向对象,3个方法开发.zip.lnk猜拳游戏:java面向对象,kotlin面向对象,js面向对象,3个...

    javascript面向对象编程

    面向对象编程的基础知识及其在JavaScript中的运用;数据类型、操作符以及流程控制语句;函数、闭包、对象和原型等概念,以代码重用为目的的继承模式;BOM、DOM、浏览器事件、AJAX和JSON;如何实现JavaScript中缺失的...

    JAVASCRIPT 面向对象编程精要

    JavaScript是一种基于原型的语言,这意味着它不像传统的面向对象语言(如Java或C++)那样拥有类的概念。在JavaScript中,对象是核心,一切都可以视为对象。JavaScript的对象是动态的,即可以在运行时添加或删除属性...

    java 面向对象程序设计课件

    1. **面向对象编程基础**:Java是面向对象的语言,其核心概念包括封装、继承和多态。封装允许我们将数据和操作数据的方法捆绑在一起,形成类。继承则让一个类(子类)可以获取另一个类(父类)的所有属性和方法,...

    JavaScript面向对象编程指南.pdf

    JavaScript是一种高级的、解释型的编程语言,它支持面向对象的编程范式,允许开发者创建对象、使用继承和多态等面向对象的特性。以下是关于JavaScript面向对象编程的一些关键知识点: 1. 对象:在JavaScript中,...

    Javascript面向对象编程

    通过上述介绍,可以看出JavaScript虽然不像传统意义上的面向对象语言那样提供明确的类和对象概念,但它仍然支持面向对象编程的基本思想。利用`function`作为类的定义、`new`操作符创建对象、以及`this`和`prototype`...

    猜拳游戏:java面向对象,kotlin面向对象,js面向对象,3个方法开发.zip

    标题 "猜拳游戏:java面向对象,kotlin面向对象,js面向对象,3个方法开发.zip" 提供了关于一个编程项目的概览,这个项目采用了三种不同的编程语言——Java、Kotlin和JavaScript,来实现同一个猜拳游戏。面向对象...

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

    JavaScript是一种动态类型的脚本语言,虽然它不像Java或C#那样拥有传统的类和实例机制,但它的面向对象编程能力仍然非常强大。JavaScript的核心在于对象、原型和隐式继承,这些都是理解其面向对象特性的重要概念。 ...

    JavaScript面向对象的支持

    JavaScript是一种广泛应用于Web开发的脚本语言,它虽然支持面向对象编程,但其面向对象的实现方式与其他传统面向对象语言(如Java或C++)有所不同。JavaScript中的面向对象特性主要体现在以下几个方面: 1. **基于...

    Java面向对象的语言 面向对象软件开发 课件

    在"Java面向对象的语言 面向对象软件开发 课件"中,我们将深入探讨以下几个核心知识点: 1. **面向对象软件开发概述**:面向对象编程(Object-Oriented Programming,简称OOP)是一种编程范式,它基于“对象”的...

    JavaScript中的面向对象.pdf

    JavaScript,作为一种广泛使用的脚本语言,常常被误解为非面向对象的语言,但实际上,JavaScript完全支持面向对象编程(OOP)的三大核心原则:封装、继承和多态。尽管它的实现方式与传统的面向对象语言(如Java或C++...

    JavaScript面向对象程序设计

    JavaScript是一种广泛用于Web开发的动态编程语言,虽然它在语法层面并未像Java或C++那样直接支持类(class)等传统面向对象概念,但它仍然具备面向对象的特性,如封装、继承和多态。面向对象编程(OOP)的核心是通过...

    JAVASCRIPT是一门面向对象语言归类.pdf

    JavaScript是一门彻头彻尾的面向对象语言,尽管它的语法和传统的面向对象语言如Java、C++有所不同。这种误解往往源于JavaScript的函数式脚本语言特性,以及它独特的原型链机制。JavaScript中的一切皆为对象,包括...

    完成Java面向对象程序设计实验课的心得体会.doc

    "Java面向对象程序设计实验课的心得体会" 本文通过对 Java 面向对象程序设计实验课的学习和实践,探索了 Java 的重要性和面向对象编程思想的应用。作者通过实验课的学习,逐步熟悉了 Java 编程思想,掌握了基本技巧...

    javaScript和java参考手册

    1. 首先,了解JavaScript和Java的基础语法,掌握变量、数据类型、控制结构等基本概念。 2. 学习对象和类的概念,理解JavaScript的原型链和Java的类继承。 3. 深入理解函数和方法,特别是JavaScript中的闭包和高阶...

    Java面向对象编程基础1.ppt

    Java面向对象编程是Java语言的核心特性,它基于真实世界的实体模型,通过对象、类和实体的概念来构建程序。本节主要介绍了面向对象编程的基本概念以及Java中类的定义和使用。 首先,对象是面向对象编程的基础,它是...

    [JavaScript] JavaScript 面向对象设计原则 (英文版)

    [No Starch Press] JavaScript 面向对象设计原则 (英文版) [No Starch Press] The Principles of Object-Oriented JavaScript (E-Book) ☆ 图书概要:☆ If you've used a more traditional object-oriented ...

Global site tag (gtag.js) - Google Analytics