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

Javascript面向对象编程——对象继承的写法

对象,具有属性与方法。这是大家都听到烂的话了。面向对象的基本特征有:封闭、继承、多态。今天来我总结一下我刚刚学到的,我只是把看到的冰山一角写下来了,希望可以完善。对象的继承相信大家都很熟悉

对象,具有属性与方法。这是大家都听到烂的话了。面向对象的基本特征有:封闭、继承、多态。今天来我总结一下我刚刚学到的,我只是把看到的冰山一角写下来了,希望可以完善。

     对象的继承相信大家都很熟悉了。可以用对象冒充、call()[apply()]、原型方式、混合方式这几种。其中混合方式我觉得是比较好的,先开回顾一下call()方法:

 

function useCall(a,b){
this.a = a;
this.b = b;
this.say=function(){
alert("I'm "+this.a+" You're"+this.b);
}
}
function callThefunction (){
var args = arguments;
useCall.call(this,args[0],args[1]);
// useCall.apply(this,arguments);
}
var testCall1 =new useCall("Not YY","Not TT");
testCall1.say();
var testCall2 = new callThefunction("YY","TT");
testCall2.say();

 

原型方式:

 

function car(price){
this.price=price;
}
car.prototype={
sayPrice:function(){console.log("Price is "+this.price);} //console.log()参见Firebug API
}
function toyCar(price){
this.price=price;
}
toyCar.prototype=new car()
var oCar=new car("100W");
oCar.sayPrice();
var oCar2=new toyCar("10CNY");
oCar2.sayPrice();

 

混合方式:

 

function house(size,price){
this.size = size;
this.price = price;
}
house.prototype.showArea=function (){
console.log("面积为"+this.size);
}
house.prototype.sayPrice=function (){
console.log("价钱为"+this.price);
}
function maofan(size,price){
house.call(this,size,price);
}
maofan.prototype=new house();

var newmaofan=new maofan("20Square meters ","1000CNY");
newmaofan.showArea();

 

混合方式另一种写法:

 

function house(size,price){
this.size = size;
this.price = price;
}
house.prototype={
showArea:function(){
console.log("面积为"+this.size);
}, sayPrice:function(){
console.log("价钱为"+this.price);
}
}
function maofan(size,price){
house.call(this,size,price);
}
maofan.prototype=new house();
var newmaofan=new maofan("20 Square meters ","1000CNY");
newmaofan.showArea();
newmaofan.sayPrice();

 

 为继承的对象追加一个方法试试:

 

function house(size,price){
this.size = size;
this.price = price;
}
house.prototype={
showArea:function(){
console.log("面积为"+this.size);
}, sayPrice:function(){
console.log("价钱为"+this.price);
}
}
function maofan(size,price){
house.call(this,size,price);
}
maofan.prototype=new house();
maofan.prototype.Sayid=function(id){ //在继承了之后再添加方法,不然就出错了,找不到方法
this.id = id;
console.log("ID is:"+this.id);
}
var newmaofan=new maofan();
newmaofan.Sayid("888");//Output ID:888

 

     几个例子,都可以去试一下。我从来没想过高手会看这些文章,只是写之前刚入门的。所以要是写的不好就不要见怪了。这些Demo只要试过了,加上你查的资料应该对这个Javascript继承这一块就熟悉了。值得说的是,有很多的写法,我们新手是没见过的。像混合方式的另一种写法,我是不经常这样用。在我看来就是一个数组,这样理解会好很多。例子看多了,看难的例子就不会晕。不过我看到长的还是会晕,还会出现_string_这种,虽然没什么了不起,看得心里不明白就不想看下去了。所以,要学真功夫还是没这么简单的。

     还忘了一点,在写call()的时候,我一开始是这样写的:xxx.call(this,a,b);但是这样却报错了。为什么呢?这里要谢谢JS群里的司马闲大哥,call(thisobj,args[0]…)。如果像我那样写,不仅是参数不对,还有就是根本乱用参数。


推荐阅读
  • C++ 异步编程中获取线程执行结果的方法与技巧及其在前端开发中的应用探讨
    本文探讨了C++异步编程中获取线程执行结果的方法与技巧,并深入分析了这些技术在前端开发中的应用。通过对比不同的异步编程模型,本文详细介绍了如何高效地处理多线程任务,确保程序的稳定性和性能。同时,文章还结合实际案例,展示了这些方法在前端异步编程中的具体实现和优化策略。 ... [详细]
  • 全面解析JavaScript代码注释技巧与标准规范
    在Web前端开发中,JavaScript代码的可读性和维护性至关重要。本文将详细介绍如何有效地使用注释来提高代码的可读性,并探讨JavaScript代码注释的最佳实践和标准规范。通过合理的注释,开发者可以更好地理解和维护复杂的代码逻辑,提升团队协作效率。 ... [详细]
  • 在JavaWeb开发中,文件上传是一个常见的需求。无论是通过表单还是其他方式上传文件,都必须使用POST请求。前端部分通常采用HTML表单来实现文件选择和提交功能。后端则利用Apache Commons FileUpload库来处理上传的文件,该库提供了强大的文件解析和存储能力,能够高效地处理各种文件类型。此外,为了提高系统的安全性和稳定性,还需要对上传文件的大小、格式等进行严格的校验和限制。 ... [详细]
  • 技术分享:使用 Flask、AngularJS 和 Jinja2 构建高效前后端交互系统
    技术分享:使用 Flask、AngularJS 和 Jinja2 构建高效前后端交互系统 ... [详细]
  • 2.2 组件间父子通信机制详解
    2.2 组件间父子通信机制详解 ... [详细]
  • 本指南介绍了如何在ASP.NET Web应用程序中利用C#和JavaScript实现基于指纹识别的登录系统。通过集成指纹识别技术,用户无需输入传统的登录ID即可完成身份验证,从而提升用户体验和安全性。我们将详细探讨如何配置和部署这一功能,确保系统的稳定性和可靠性。 ... [详细]
  • 本文介绍了如何使用 Node.js 和 Express(4.x 及以上版本)构建高效的文件上传功能。通过引入 `multer` 中间件,可以轻松实现文件上传。首先,需要通过 `npm install multer` 安装该中间件。接着,在 Express 应用中配置 `multer`,以处理多部分表单数据。本文详细讲解了 `multer` 的基本用法和高级配置,帮助开发者快速搭建稳定可靠的文件上传服务。 ... [详细]
  • 在PHP中如何正确调用JavaScript变量及定义PHP变量的方法详解 ... [详细]
  • 在 JavaScript 中,浮点数的除法运算常常会出现精度问题。本文介绍了一种方法,通过自定义函数来精确控制除法运算结果的小数位数,确保计算结果的准确性。该方法不仅适用于除法,还可以扩展到其他浮点数运算,有效避免了 JavaScript 在处理浮点数时常见的精度误差。 ... [详细]
  • 优化Vite 1.0至2.0升级过程中遇到的某些代码块过大问题解决方案
    本文详细探讨了在将项目从 Vite 1.0 升级到 2.0 的过程中,如何解决某些代码块过大的问题。通过具体的编码示例,文章提供了全面的解决方案,帮助开发者有效优化打包性能。 ... [详细]
  • 深入解析:Synchronized 关键字在 Java 中对 int 和 Integer 对象的作用与影响
    深入探讨了 `Synchronized` 关键字在 Java 中对 `int` 和 `Integer` 对象的影响。尽管初看此题似乎简单,但其实质在于理解对象的概念。根据《Java编程思想》第二章的观点,一切皆为对象。本文详细分析了 `Synchronized` 关键字在不同数据类型上的作用机制,特别是对基本数据类型 `int` 和包装类 `Integer` 的区别处理,帮助读者深入理解 Java 中的同步机制及其在多线程环境中的应用。 ... [详细]
  • 在处理大规模数据数组时,优化分页组件对于提高页面加载速度和用户体验至关重要。本文探讨了如何通过高效的分页策略,减少数据渲染的负担,提升应用性能。具体方法包括懒加载、虚拟滚动和数据预取等技术,这些技术能够显著降低内存占用和提升响应速度。通过实际案例分析,展示了这些优化措施的有效性和可行性。 ... [详细]
  • V8不仅是一款著名的八缸发动机,广泛应用于道奇Charger、宾利Continental GT和BossHoss摩托车中。自2008年以来,作为Chromium项目的一部分,V8 JavaScript引擎在性能优化和技术创新方面取得了显著进展。该引擎通过先进的编译技术和高效的垃圾回收机制,显著提升了JavaScript的执行效率,为现代Web应用提供了强大的支持。持续的优化和创新使得V8在处理复杂计算和大规模数据时表现更加出色,成为众多开发者和企业的首选。 ... [详细]
  • 在本文中,我们将详细介绍如何构建一个用于自动回复消息的XML类。当微信服务器接收到用户消息时,该类将生成相应的自动回复消息。以下是具体的代码实现:```phpclass We_Xml { // 代码内容}```通过这个类,开发者可以轻松地处理各种消息类型,并实现高效的自动回复功能。我们将深入探讨类的各个方法和属性,帮助读者更好地理解和应用这一技术。 ... [详细]
  • 本文详细解析了使用C++实现的键盘输入记录程序的源代码,该程序在Windows应用程序开发中具有很高的实用价值。键盘记录功能不仅在远程控制软件中广泛应用,还为开发者提供了强大的调试和监控工具。通过具体实例,本文深入探讨了C++键盘记录程序的设计与实现,适合需要相关技术的开发者参考。 ... [详细]
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社区 版权所有