`
babysuperman
  • 浏览: 1792 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

JavaScript基础知识 第三篇 Object

阅读更多

Object

 

1.object创建

 

在JavaScript中,对象object就是一组引用reference的集合。可以直接创建一个,例如:

 

var obj = {
    name: 'Jack',
    height: 178
}; //这就是一个对象啦

 

如果想要习创建大量相似的对象,就需要一个类似模板的东西来完成这个任务。如果是使用Java等语言的同学知道这个模板就是 ”类“ (class),在JavaScript中没有class的概念,一个新对象是由一个prototype对象直接复制出来的。而构造函数在JavaScript中可以是任何函数,通常首字母大写来表示该函数用作构造函数。

 

2.构造函数、this和prototype

 

下面给出构造函数的写法,例如:

 

function User( name ) {
    this.name = name;//this 指向新创建的对象
    this.sayName = function() {
        alert( this.name );
    }
}

var user = new User('Jack');

user.sayName(); //'Jack';

 

注意到构造函数中的this关键字,this关键字在JavaScript中非常灵活,在构造函数中this指向新创建的对象。所以新创建的对象user的name属性被赋值为'Jack',sayName为一个函数。

考虑这个问题,每个user有一个自己的name没有问题,但是都拥有一个sayName属性是这种无状态的函数,是对内存的极大浪费,那我们要把这类通用的属性放在哪里呢,就是下面要介绍的prototype了。我们把sayName放到prototype上:

 

 function User(name) {
        this.name = name;
    }

    User.prototype.sayName = function () {
        return this.name;
    }

    var user = new User('Jack');
    var user1 = new User('Hello');
    alert(user.sayName()); // 'Jack'
    alert(user1.sayName());// 'Hello'
    alert(user.sayName === user1.sayName);//true

 

 这样user和user1的sayName就是同一个函数了。

 

3.继承

 

那如何实现其他语言中的继承呢,JavaScript是通过原型链实现的(prototype chain),例如:

 function User(name) {
        this.name = name;
    }

    User.prototype.sayName = function () {
        return this.name;
    }

    function MaleUser(name) {
        this.name = name;
        this.gender = 'male';
    }

    MaleUser.prototype = new User();
    
    var maleUser = new maleUser('Jack');
    alert(maleUser.sayName());  //'Jack'

 

注意MaleUser.prototype = new User();这行代码就是将User实例复制给MaleUser.prototype,这样就形成了原型链,sayName属性在MaleUser的原型上找不到,就到User的原型上去找。如果还找不到就一直找到Object的原型。最后,JavaScript是一门面向对象的语言,我们将在很多地方看到对象的身影。

 

小结:本文介绍了JavaScript的基础知识,由于JavaScript的写法比较灵活,想要看比较好的JavaScript class的实现?请移步这里

 

小作业:去看看class的历史吧,亲~

 

 

分享到:
评论

相关推荐

    JavaScript基础和实例代码

    第3章 JavaScript事件处理 3.1 什么是事件 3.2 HTML文档事件 3.2.1 事件捆绑 3.2.2 浏览器事件 3.2.3 HTML元素事件 3.2.4 IE扩展的事件 3.3 JavaScript如何处理事件 3.3.1 匿名函数 3.3.2 显式声明 3.3.3 手工触发 ...

    Object-oriented-programming-for-JavaScript-developers:适用于JavaScript开发人员的面向对象编程的代码存储库

    熟悉JavaScript语言构造的基础知识以及面向对象的编程及其应用程序。 学习使用Node.js在JavaScript中构建可扩展的服务器应用程序 以三种编程语言生成实例:Python,JavaScript和C# 结合使用访问修饰符,前缀,...

    Java语言基础下载

    第二十六章:JavaScript基础 505 学习目标 505 基本结构 506 JavaScript代码的加入 506 基本数据类型 506 常量 507 表达式和运算符 509 实例 511 JavaScript程序构成 513 事件驱动及事件处理 516 内容总结 519 独立...

    JavaScript高级教程

    第 1 章 JavaScript 是什么...............................................1 3 1.1 历史简述..............................................1 1.2 JavaScript 实现................................................

    asp.net知识库

    深入剖析ASP.NET组件设计]一书第三章关于ASP.NET运行原理讲述的补白 asp.net 运行机制初探(httpModule加载) 利用反射来查看对象中的私有变量 关于反射中创建类型实例的两种方法 ASP.Net应用程序的多进程模型 NET委托...

    jQuery技术内幕:深入解析jQuery架构设计与实现原理

    第三部分(第3~7章)详细分析了底层支持模块的源码实现,包括选择器Sizzle、异步队列Deferred Object、数据缓存Data、队列Queue、浏览器功能测试Support。 第四部分(第8~14章)详细分析了功能模块的源码实现,...

    [ASP.NET.AJAX编程参考手册(涵盖ASP.NET.3.5及2.0)].(美)霍斯拉维.扫描版.pdf

    第3章 内置的和自定义异常类型 3.1 ASP.NET AJAX内置异常类型 3.1.1 ArgumentException 3.1.2 ArgumentNullException 3.1.3 ArgumentOutOfRangeException 3.1.4 ArgumentTypeException 3.1.5 ...

    ASP开发技术大全3

    包括HTML标记语言、CSS样式、ASP基础、ASP运行环境配置和管理、ASP程序调试与错误处理、VBScript脚本语言、JavaScript脚本语言、Request对象、Response对象、Application对象、Session对象、Server对象、Object...

    ASP开发技术大全1

    包括HTML标记语言、CSS样式、ASP基础、ASP运行环境配置和管理、ASP程序调试与错误处理、VBScript脚本语言、JavaScript脚本语言、Request对象、Response对象、Application对象、Session对象、Server对象、Object...

    ASP开发技术大全2

    包括HTML标记语言、CSS样式、ASP基础、ASP运行环境配置和管理、ASP程序调试与错误处理、VBScript脚本语言、JavaScript脚本语言、Request对象、Response对象、Application对象、Session对象、Server对象、Object...

    ASP开发技术大全5

    包括HTML标记语言、CSS样式、ASP基础、ASP运行环境配置和管理、ASP程序调试与错误处理、VBScript脚本语言、JavaScript脚本语言、Request对象、Response对象、Application对象、Session对象、Server对象、Object...

    ASP开发技术大全4

    包括HTML标记语言、CSS样式、ASP基础、ASP运行环境配置和管理、ASP程序调试与错误处理、VBScript脚本语言、JavaScript脚本语言、Request对象、Response对象、Application对象、Session对象、Server对象、Object...

    Web系统与技术 课程教材

    第1章 Web系统与技术的基础知识... 1 1.1 Internet介绍... 1 1.1.1 Internet含义... 1 1.1.2 TCP/IP协议... 1 1.1.3 域名... 2 1.1.4 URL. 3 1.1.5 MIME. 3 1.1.6 HTTP协议... 4 1.2 Web浏览器... 5 1.3 ...

    XML学习指南 电子书

    (例如,因为我在第二部分介绍了怎样定义XML属性,所以在第三部分接着介绍了在显示文档时怎样访问这些属性。)直到我亲自动手编写并显示XML文档时,才真正理解了XML。因此,我在本书中也采用了这种方法,包括了许多...

    XML学习指南

    (例如,因为我在第二部分介绍了怎样定义XML属性,所以在第三部分接着介绍了在显示文档时怎样访问这些属性。)直到我亲自动手编写并显示XML文档时,才真正理解了XML。因此,我在本书中也采用了这种方法,包括了许多...

    XML学习指南经典中文版

    (例如,因为我在第二部分介绍了怎样定义XML属性,所以在第三部分接着介绍了在显示文档时怎样访问这些属性。)直到我亲自动手编写并显示XML文档时,才真正理解了XML。因此,我在本书中也采用了这种方法,包括了许多...

    XML轻松学习手册--XML肯定是未来的发展趋势,不论是网页设计师还是网络程序员,都应该及时学习和了解

     好了,通过第三章的学习,我们已经了解了一些XML和DTD的基本术语,但是我们还不知道怎样来写这些文件,需要遵循什么样的语法,在下一章,将重点介绍有关撰写XML和DTD文档的语法。 第四章 XML语法 七.DTD的语法...

    ASP.NET.4揭秘

    15.1 chart控件的基础知识528 15.1.1 使用chart控件显示数据528 15.1.2 排序和过滤数据532 15.1.3 统计公式534 15.2 定制图表的外观539 15.2.1 定制背景和绘图区540 15.2.2 3d图表543 15.3 多级报告543 15.4 小结544...

Global site tag (gtag.js) - Google Analytics