`
好好学习-天天向上
  • 浏览: 37041 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

js 面向对象继承的两种方式及封装

 
阅读更多

 

        最近学习js面向对象,一直不理解继承及封装,通过查看文字资料及视频资料,现总结如下。

   

    第一种方式:通过 prototype:student.prototype = new Person();

function Person(name){
    this.name = name;
}
Person.prototype.say = function(){
    alert("per_hello" + this.name);
}
function student(){
    this.name = name;
}
student.prototype = new Person();
var supersay = student.prototype.say;
student.prototype.say = function(){
    supersay.call(this);
    alert("stu_hello" + this.name);
}
var s = new student();
s.say();

    

   第二种方式:通过直接赋值:  var _this = Person(name);

function Person(name){
        var n = "ding";
        var _ren = {};
        _ren.name = name;
        _ren.sayhello = function(){
            alert("P_hello" + _ren.name + n );
        }
        return _ren;
    }
function Teacher(){
    var _this = Person(name);
    var supersay = _this.sayhello;
    _this.sayhello = function(){
        supersay.call(_this);
        alert("T_hello" + _this.name);
    }
    return _this;
}
var t = Teacher("imi");
t.sayhello();

 

 

 

    这一部分是封装。

(function(){
    function Person(name){
        var n = "ding";
        var _ren = {};
        _ren.name = name;
        _ren.sayhello = function(){
            alert("P_hello" + _ren.name + n );
        }
        return _ren;
    }
    window.Person = Person;
}());
function Teacher(){
    var _this = Person(name);
    var supersay = _this.sayhello;
    _this.sayhello = function(){
        supersay.call(_this);
        alert("T_hello" + _this.name);
    }
    return _this;
}
var t = Teacher("imi");
t.sayhello();

    封装其实 就是用()将function放里面,然后最后加()让它能自己执行自己,同时window.Person = Person; 让它能被调用。

     总结一下这三个,其实实现的东西都一样只是表现形式不一样,需要注意的是子类中可以定义一个和父类相同的方法,但执行结果是只执行子类的方法,即子类定义的覆盖了父类的方法。如果想调用父类的方法可以通过

  var supersay = _this.sayhello;
  supersay.call(_this);
 进行访问及调用。
    封装中即第三个,定义的
var n = "ding";
    只能在其封装函数的内部使用,即:
alert("P_hello" + _ren.name + n );
   不能在外部使用,即:
alert("T_hello" + _this.name);
不能写成alert("T_hello" + _this.name + n);
不会执行出预期效果。
 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    JAVA面向对象基础测试题-继承-封装-多态等测试题.docx

    面向对象编程(Object-Oriented Programming, OOP)是一种编程范式,它将数据和处理数据的方法绑定在一起,形成一个整体——对象。OOP 的主要特征包括封装、继承和多态。 1. **封装**:封装是将数据和操作数据的...

    学习javascript面向对象 javascript实现继承的方式

    以上六种继承方式在JavaScript面向对象编程中各有用途,开发者可以根据具体需求选择最适合的继承方式。需要注意的是,虽然继承可以使代码复用性更高,但过度的继承层次和复杂的继承关系可能会导致代码难以理解与维护...

    JS封装和继承-入门级

    5. **寄生组合式继承**:结合了寄生式继承和组合继承的优点,是JavaScript中推荐的继承方式,可以在`Javascript面向对象编程(三):非构造函数的继承.docx`中找到更详细的解释。 例如,使用寄生组合式继承: ```...

    JavaScript面向对象编程指南

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

    javaScript面向对象继承方法经典实现.docx

    以下是两种经典的JavaScript面向对象继承方法的详细解释: 1. **基于原型的继承**: 这种方法是JavaScript最基础的继承方式,通过`prototype`属性实现。在提供的代码示例中,首先定义了一个`Pet`对象,它有一个...

    面向对象JavaScript开发

    JavaScript,作为一种广泛应用...JavaScript 面向对象程序设计——继承与多态.pdf 和 JavaScript 面向对象程序设计——封装.pdf 这两个文档可能深入探讨了这些主题,帮助读者深入理解并掌握JavaScript的面向对象开发。

    javascript面向对象编程.pdf

    总而言之,学习现代JavaScript面向对象编程,有助于开发者在认识这门语言演化的基础上,运用面向对象的设计和编程模式来构建更加健壮和可维护的JavaScript应用程序。同时,测试和调试是保证代码质量不可或缺的环节,...

    javascript面向对象框架

    "javascript面向对象框架"这一主题涵盖了JavaScript中实现面向对象编程的框架,特别是Prototype和MooTools这两个优秀的库。 Prototype是JavaScript的一个开源库,它扩展了JavaScript的基本对象和函数,提供了强大的...

    第15章 javascript面向对象与原型

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

    javascript面向对象

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

    JavaScript面向对象

    ### JavaScript面向对象基础 #### 一、面向对象概念与JavaScript的关系 面向对象编程(Object-Oriented Programming,简称OOP)是一种重要的编程范式,它不仅限于特定的技术或语言,而是一种解决问题的方法论,...

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

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

    面向对象javascript

    面向对象JavaScript是一种编程范式,它将JavaScript脚本编写转换为面向对象的思想。面向对象的JavaScript开发可以极大地提高开发效率和代码健壮性。 面向对象的JavaScript的特征包括: * 继承:允许子类继承父类的...

    js面向对象笔记

    JavaScript 的开发模式主要有两种:函数式和面向对象(OOP)。函数式编程是一种面向过程的编程范式,而面向对象是一种编程范式,其核心概念是通过类来创建多个具有相同属性和方法的对象。 JavaScript 通过构造函数...

    javascript面向对象编程

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

    javascript面向对象编程pdf

    总结来说,JavaScript面向对象编程涵盖了从基本原理到实现细节的多个方面,包括但不限于对象、构造函数、原型链、继承以及封装等。本书系统地介绍了这些知识点,并通过实例演示了如何在现代JavaScript中实现OOP,...

    JavaScript入门教程(3) js面向对象

    创建对象的方式主要有两种:字面量和构造函数。使用字面量的方式简单直接,只需将对象属性和方法用大括号括起来即可。而使用构造函数,则可以利用new关键字来创建对象的实例,这种方式便于重用代码和批量创建对象。 ...

    Javascript面向对象基础

    JavaScript提供CommonJS(Node.js)和ES6模块(import/export)两种模块系统,支持代码的模块化和封装。 10. **设计模式**: 在JavaScript中,有许多面向对象的设计模式,如单例模式、工厂模式、观察者模式等,...

    javascript 面向对象封装与继承

    JavaScript面向对象编程的封装和继承 在JavaScript中,面向对象编程是通过“对象”来组织代码的一种编程范式。对象是拥有属性和方法的实体,属性描述对象的状态,方法描述对象的行为。JavaScript是一种基于原型的...

Global site tag (gtag.js) - Google Analytics