热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

JavaScripta面向对象之继承

最近一直在看NicholasC.Zakas的《JavaScript高级程序设计》看到面向对象编程时,就自己连抄带编总结了一下。由于自己对很多概念理解不是过于透彻,所以以代码为主,以后会慢慢更

最近一直在看Nicholas C.Zakas的《Javascript高级程序设计》

看到面向对象编程时,就自己连抄带编总结了一下。

由于自己对很多概念理解不是过于透彻,所以以代码为主,以后会慢慢更新加上自己的理解

如有不妥或者错误之处,还请斧正

一、对象冒充

function ClassA(sColor){
    this.color=sColor;
    this.sayColor=function(){
        alert(this.color);
    }
}

function ClassB(sColor,sName){
    this.showColor=ClassA;
    this.showColor(sColor);
    delete this.showColor;

    this.name=sName;
    this.sayName=function(){
        alert(this.name);
    }
}

var test=new ClassB('red','color');
test.sayColor();
test.sayName();

二、call()方法

function ClassA(sColor){
    this.color=sColor;
    this.sayColor=function(){
        alert(this.color);
    }
}

function ClassB(sColor,sName){
    ClassA.call(this,sColor);

    this.name=sName;
    this.sayName=function(){
        alert(this.name);
    };
}

var test=new ClassB('red','color');
test.sayColor();
test.sayName();

三、apply()方法

function ClassA(sColor){
    this.color=sColor;
    this.sayColor=function(){
        alert(this.color);
    }
}

function ClassB(sColor,sName){
    ClassA.call(this,sColor);

    this.name=sName;
    this.sayName=function(){
        alert(this.name);
    };
}

var test=new ClassB('red','color');
test.sayColor();
test.sayName();

四、原型链方法

function ClassA(){};
ClassA.prototype.color='red';
ClassA.prototype.sayColor=function(){
    alert(this.color);
};

function ClassB(){};
ClassB.prototype=new ClassA();
var test=new ClassB();
test.sayColor();

五、混合模式

//类A的属性
function ClassA(sColor){
    this.color=sColor;
}
//类A的方法
ClassA.prototype.sayColor=function(){
    alert(this.color);
};
//类B继承A的属性
function ClassB(sColor,sName){
    ClassA.call(this,sColor);
    this.name=sName;
}
//类B继承A的方法
ClassB.prototype=new ClassA();
//类B自己的方法
ClassB.prototype.sayName=function(){
    alert(this.name);
}

var test=new ClassB('red','color');
test.sayColor();
test.sayName();

 


推荐阅读
  • 如何高效地压缩JavaScript代码以提升网页性能
    本篇内容介绍了“javascript如何压缩”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处 ... [详细]
  • 本文详细介绍了如何通过简单的JavaScript代码,在网页中实现禁用鼠标右键的功能,以保护网页内容不被轻易复制。 ... [详细]
  • 本文探讨了如何通过检测浏览器类型来动态加载特定的npm包,从而优化前端性能。具体而言,仅在用户使用Edge浏览器时加载相关包,以提升页面加载速度和整体用户体验。此外,文章还介绍了实现这一目标的技术细节和最佳实践,包括使用User-Agent字符串进行浏览器识别、条件加载策略以及性能监控方法。 ... [详细]
  • 在 Angular Google Maps 中实现图片嵌入信息窗口的功能,可以通过使用 `@agm/core` 库来实现。该库提供了丰富的 API 和组件,使得开发者可以轻松地在地图上的信息窗口中嵌入图片。本文将详细介绍如何配置和使用这些组件,以实现动态加载和显示图片的功能。此外,还将探讨一些常见的问题和解决方案,帮助开发者更好地集成这一功能。 ... [详细]
  • 我有一个包含多个URL的数组。首先,需要同步获取数组中的第一个和第二个URL,当其中任意一个请求完成时,再继续处理第三个URL。这种按序获取的方式可以确保数据的正确性和完整性,避免因并发请求导致的数据混乱。 ... [详细]
  • 本文探讨了如何在 Google Sheets 中通过自定义函数实现 AJAX 调用。具体介绍了编写脚本的方法,以便在电子表格中发起 AJAX 请求,从而实现数据的动态获取与更新。这种方法不仅简化了数据处理流程,还提高了工作效率。 ... [详细]
  • 深入解析 JavaScript 代码执行流程:理解执行上下文与变量提升机制
    本文深入探讨了JavaScript代码的执行流程,重点解析了执行上下文和变量提升机制。通过详细分析代码解析过程,帮助开发者更好地理解JavaScript中的作用域和执行环境,为编写高效、无误的代码提供理论支持。 ... [详细]
  • 本文深入探讨了JavaScript解释器的核心功能及其在开发过程中的重要作用。通过分析其工作原理和应用场景,帮助开发者更好地理解JavaScript解释器如何高效执行代码,提升开发效率。文章还结合实际案例,详细解答了开发者在使用过程中可能遇到的常见问题,为用户提供全面的技术指导。 ... [详细]
  • 软件开发史上最具影响力的十位编程大师(附图解)
    在软件开发领域,有十位编程大师对行业发展产生了深远影响。本文基于国外知名社区的一项评选,通过图文并茂的形式,详细介绍了这十位杰出人物,包括游戏开发先驱John Carmack等,为读者呈现了他们卓越的技术贡献与创新精神。 ... [详细]
  • 在《JavaScript进阶之旅:第三阶段深入探索》中,我们将通过一系列复杂的代码示例,深入探讨JavaScript的高级特性与应用技巧。本阶段将重点讲解如何利用用户输入进行动态交互,例如通过提示框获取1到9之间的正整数,并基于此实现更多功能。此外,还将介绍如何优化代码结构,提升程序的可读性和维护性。 ... [详细]
  • 本文旨在构建一个JavaScript函数,用于对用户输入的电子邮件地址和密码进行有效性验证。该函数将确保输入符合标准格式,并检查密码强度,以提升用户账户的安全性。通过集成正则表达式和条件判断语句,该方法能够有效防止常见的输入错误,同时提供即时反馈,改善用户体验。 ... [详细]
  • functionCheckAvailableScope(){$(input[namechkXZSYY]).each(function( ... [详细]
  • Thisquestionalreadyhasananswerhere:这个问题已经有了答案:HowdoIcheckifanarrayincludes ... [详细]
  • 本文由公众号【数智物语】(ID: decision_engine)发布,关注获取更多干货。文章探讨了从数据收集到清洗、建模及可视化的全过程,介绍了41款实用工具,旨在帮助数据科学家和分析师提升工作效率。 ... [详细]
  • 在TypeScript中,我定义了一个名为 `Employee` 的接口,其中包含 `id` 和 `name` 属性。为了使这些属性可选为空,可以通过使用 `| null` 或 `| undefined` 来扩展其类型定义。例如,`id: number | null` 表示 `id` 可以是数字或空值。这种类型的灵活性在处理不确定的数据时非常有用,可以提高代码的健壮性和可维护性。 ... [详细]
author-avatar
小白菜
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有