`
rubyrock
  • 浏览: 23025 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
社区版块
存档分类
最新评论

JavaScript学习笔记之一:类的定义

阅读更多

对于JavaScript,可以说是爱恨交加。很早就开始接触JS了,大概还是在上大学的时候,就曾经学过一段时间的JS,写过一些小函数做网页输入验证之类的工作。此后在工作中曾经几番使用过JS,但都是浅尝辄止,没有深入学习。有一段时间甚至还有十分痛恨JS,因为不熟悉它,经常遇到一些莫名奇妙让问题,调试起来又很困难,真是让人抓狂!做薄荷网 之后,需要使用JS的地方很多,尤其是要实现一下交互要求比较高的场合,例如动态页面效果、Ajax、Flash编程等,没有JS帮助是不可能的。而现在,前端技术已经成为我们的一个瓶颈,因此必须好好的把它掌握了。

 

这两天把那本经典的《JavaScript高级程序设计》仔细翻了一遍,感觉收获很多。也许是使用了同为动态脚本语言的Ruby的缘故,感觉一些以前挺难理解的东西现在变得很自然了。

 

JavaScript类的定义和其它面向对象语言C++,Java比起来显得很古怪,而且有多种方式。

第1种是工厂方式, 用函数生成对象,示例代码如下:

function createCar() {
   var car = new Object;
   car.color = 'red';
   car.showColor = function() {
       alert(this.color);
   }
}

var car1 = createCar();
var car2 = createCar();
car1.showColor();

 这种方式看起来不像类定义,生成对象的时候也不直观,最大的缺点是在每次生成对象的时候重复生产对象的方法,很低效。

 

第2种是构造函数方式 ,使用了new运算符,示例代码如下:

function Car(sColor) {
    this.color = sColor;
    this.showColor = function() {
       alert(this.color);
    }
}

var car1 = new Car('red');
var car2 = new Car('blue');
car1.showColor();

 这种方法使用了new运算符,生成对象比较直观。new Car('red')时,一开始程序自动生成一个Object的实例赋给this,最后函数返回this,已生成对象。这种方法有和工厂方式同样的问题,就是对象的方法是重复定义的,低效。

 

第3种是原型方式 ,使用对象的prototype属性,示例代码如下:

function Car() {
}

Car.prototype.color = 'red';
Car.prototype.showColor = function() {
    alert(this.color);
}

var car1 = new Car();
var car2 = new Car();
car1.showColor();
car2.showColor();
car1.color = 'blue';
car1.showColor();
car2.showColor();

这种方式对象的方法不会重复生成了,但是问题是对象的属性是共享的,比如上面的代码返回的结果将是

red

red

blue

blue

也就是car1和car2其实是共享了color属性,这是不对的。

 

第4种方式,混合构造函数和原型方式 ,构造函数和原型方式都各有其可取的地方,又有其限制,组合起来就可以解决问题了。示例代码如下:

function Car(sColor) {
   this.color = sColor;
}

Car.prototype.showColor = function() {
   alert(this.color);
}

var car1 = new Car('red');
var car2 = new Car('blue');

这种方式可以避免2和3的问题,是定义JavaScript类最常用的方法了。

 

如果需要继承,怎么定义类呢? 关于继承也有多种方式,具体我就不展开了,下面示例代码是常用的方式:

function Car(sColor) {
   this.color = sColor;
}

Car.prototype.showColor = function() {
   alert(this.color);
}

function BmwCar(sColor,sName) {
     Car.call(this,sColor);
     this.name = sName;
}

BmwCar.prototype = new Car();
BmwCar.prototype.showName = function() {
   alert(this.name);
}

 

 

分享到:
评论

相关推荐

    JavaScript-学习笔记.pdf

    以上是JavaScript学习笔记中提到的一些核心知识点,通过对这些知识点的理解和熟练应用,可以为进一步学习和掌握JavaScript打下坚实的基础。在实际开发过程中,结合具体的项目需求,这些知识会得到更深入的拓展和应用...

    javascript学习笔记讲解版参考.pdf

    JavaScript学习笔记讲解版参考.pdf是一份详尽的教程,涵盖了从基础到进阶的JavaScript知识。这份笔记首先从CSS样式表开始,引导读者理解网页样式的设置与应用。 1. CSS(Cascading Style Sheets)样式表是用于控制...

    javascript学习笔记

    ### JavaScript 学习笔记知识点概览 #### 一、JavaScript 的基本概念与运行方式 - **JavaScript** 是一种脚本语言,主要用于网页的交互性设计,由 Netscape 公司开发。 - **Java Applet** 是由 Sun Microsystems ...

    JavaScript学习笔记

    JavaScript是一种广泛应用于网页和网络应用的脚本语言,它在浏览器端...通过阅读"JavaScript从入门到精通学习笔记.docx"文档和解压"Chapter2.rar",你将深入探索以上各个知识点,逐步成为一名熟练的JavaScript开发者。

    js 笔记 javascript 学习笔记

    本学习笔记将深入探讨JavaScript的核心概念,包括变量、数据类型、操作符、控制流程、函数、对象、数组、原型链、闭包等,并结合实际示例,如my.js、order.js、login.js等文件,来讲解其在实际项目中的应用。...

    javascript学习笔记1

    ### JavaScript 学习笔记1:数组、DOM与BOM简要总结 #### 数组方法概述 在JavaScript中,数组是一种非常重要的数据结构,用于存储多个值。数组对象提供了多种方法来帮助我们操作数组中的元素。 - **pop()**:从...

    javaScript学习笔记总结.docx

    JavaScript是一种轻量级的解释型编程语言,主要用于网页和网络应用开发。它由网景公司的Brendan Eich在1995年发明,最初设计目的是增强网页的交互性,验证表单数据。JavaScript的运行环境是浏览器,它不需要预编译,...

    javascript学习笔记整理知识点整理

    这份“javascript学习笔记整理知识点整理”是针对初学者的一份宝贵资料,涵盖了JavaScript的基础知识,旨在帮助新手快速入门并掌握这门语言的核心概念。 一、变量与数据类型 在JavaScript中,变量用于存储数据。...

    JavaScript基础学习笔记

    JavaScript 基础学习笔记 本资源摘要信息基于黑马视频记录的学习笔记,涵盖了 JavaScript 基础知识点,包括 HTML、CSS、JavaScript、DOM、事件处理等内容。 HTML 和 CSS 基础 * HTML 结构:head、body、title、...

    javascript入门学习笔记

    这些只是JavaScript学习笔记的一部分,深入理解并熟练运用这些概念,将为JavaScript编程打下坚实的基础。随着学习的深入,还会接触到更多高级特性和框架,如闭包、原型链、AJAX、jQuery、Vue.js、React.js等,这些都...

    JavaScript学习笔记.pdf

    JavaScript 学习笔记 JavaScript 是互联网上流行的脚本语言,可以用于 HTML 和 web,广泛应用于服务器、PC、笔记本、平板电脑和智能手机等设备。JavaScript 是一种轻量级的编程语言,可以插入 HTML 页面的编程代码...

    Javascript权威指南学习笔记二

    ### JavaScript权威指南学习笔记二:客户端JavaScript #### 第十二章:Web浏览器中的JavaScript ##### 一、Web浏览器环境 在客户端JavaScript中,浏览器提供了一个特定的执行环境,其中`window`对象扮演着至关...

    JavaScript学习笔记讲解

    这只是JavaScript学习笔记的一小部分,JavaScript还有更多高级特性和概念,如对象、数组、函数、类、模块、闭包等,以及DOM操作、事件处理、Ajax异步请求等内容,需要进一步深入学习和实践才能掌握。

    JavaScript基础教程笔记

    ### JavaScript基础教程笔记知识点 ...JavaScript作为现代Web开发的核心技术之一,其重要性不言而喻。随着技术的发展,JavaScript也在不断地进化和完善,学习者需要保持学习的热情和技术更新的速度同步。

    JavaScript 入门 新手学习笔记

    这篇"JavaScript入门新手学习笔记"提供了全面的学习资源,适合初学者系统性地掌握这一技术。 笔记可能包含了以下关键知识点: 1. **基础语法**:JS的基础包括变量(var、let、const)、数据类型(如字符串、数字、...

    Javascript学习笔记(传智播客视频学习笔记+代码)

    "Javascript学习笔记(传智播客视频学习笔记+代码)"是一份全面介绍JavaScript基础知识的学习资源,适用于初学者。这份笔记结合了传智播客的web前端培训视频内容,提供了丰富的理论讲解和实践代码,帮助读者从零开始...

Global site tag (gtag.js) - Google Analytics