前言

在以前的代码中,我们使用 primitive 类型的变量和 procedural manner 来执行脚本。但是,更好的办法是 object-oriented (面向对象)的。作者说:它能让我们 better in a programming sense,并且你不再想用原来的 procedural manner 的那种方法了。

什么是 Object,什么是 OO(Objective Oriented)?

Object的定义

JavaScript 中的 object 指的是: a collection of properties,这些 properties 中又包括它们的 name 和 value.

OO的定义

OO 指的是一种编程的思想,它包括两个要素:state s和 behaviors。通过对象的特征的引用来达到目的,而不是 procedual 那样一步一步来。
引用:

Objects that have state (like a car might have an oil and fuel level), and behavior (like a car can be started, driven and stopped).

In objec-oriented programming, we think in terms of objects rather than procedures.

对于 OO 的好处,作者这样表述:

object-oriented programming allows you to free your mind to think at a higher level.

Javascript 中的 object [state部分]

定义一个 object

格式:

  1. 开头有 var declaration 和 object 的名字
  2. 接下来各种 property 包含在 { } 中
  3. 每个 property 包含name:value,的格式
  4. 在 } 别忘了加 ;

范例:

基本操作

  1. 通过 dot notation 来 access a property,或者通过["nameOfProperty"]来达到目的,范例如:chevy.color 和 chevy['color']
  2. 改变 property 可以采用赋值的方式
  3. 增加一个新 property 可以采用赋值的方式
  4. 可以用 delete operator删除一个 property,格式:delete fido.dogYears.
    ###object 的实质
    object 的 var 类型实际上表表明了这是类似于 pointer 的储存着 reference 的值。
    因此,在函数进行传递的时候,由于传递的是地址, 所以在函数中处理的是 same object,因此在函数中的命令会改变它的值。

Javascript 中的 object [behavoir部分]

在 object 中添加函数

格式:先写一个 name,然后再写函数部分:function(parameter){}
范例:

state 和 behavior 之间的关系

Have you also notice these two interact? Like, we can't start a car if it doesn't have fuel, and the amount of fuel should get reduced as we drive the car. Kinda like read life, right?

使用关键字:this

在 object 中,value 和 behavoir 是相互影响的,因此当我们需要在 object 中的 behavior 调用 object 中的 value。
调用的方法是使用 this 这个 keyword. 表示 这个函数所在的 object 中的这个值,因此它是相对的。
格式:this.nameOfproperty

使用 for-in 用来iterate throngh an object's properties

格式:for (var .. in nameOfObject){
block;}
范例:for (var prop in chevy) {
console.log(...)
}

Javascript 第五章总结:A trip to Objectville的更多相关文章

  1. javascript第五章--函数表达式

    ① 递归 ② 闭包 ③ 模仿块级作用域 ④ 私有变量

  2. 读《编写可维护的JavaScript》第五章总结

    第五章 UI层的松耦合 5.1 什么是松耦合 在Web开发中,用户界面是由三个彼此隔离又相互作用的层定义的: HTML是用来定义页面的数据和语义 CSS用来给页面添加样式 JavaScript用来给页 ...

  3. Javascript权威指南——第二章词法结构,第三章类型、值和变量,第四章表达式和运算符,第五章语句

    第二章 词法结构 一.HTML并不区分大小写(尽管XHTML区分大小写),而javascript区分大小写:在HTML中,这些标签和属性名可以使用大写也可以使用小写,而在javascript中必须小写 ...

  4. 【JavaScript权威指南(第五版)】笔记之第二部分 客户端JavaScript 第13章~第23章

    第十三章 Web浏览器中的javascript ①   eg:下面两行代码实际上执行的是相同的功能 var answer = 42; window.answer = 42;   ③每个window对象 ...

  5. 【JavaScript权威指南(第五版)】笔记之第一部分 核心javascript (第1章~第12章)

    第一章 javascript概述 ①.javascript是一种松散类型语言;也是一种解释型语言;         第二章 词法结构 ①.大小写敏感         第三章 数据类型和值 ①.isFi ...

  6. ArcGIS API for JavaScript 4.2学习笔记[16] 弹窗自定义功能按钮及为要素自定义按钮(第五章完结)

    这节对Popups这一章的最后两个例子进行介绍和解析. 第一个[Popup Actions]介绍了弹窗中如何自定义工具按钮(名为actions),以PopupTemplate+FeatureLayer ...

  7. 第五章 JavaScript对象及初识面向对象

    第五章   JavaScript对象及初识面向对象 一.对象 在JavaScript中,所有事物都是对象,如字符串.数值.数组.函数等. 在JavaScript对象分为内置对象和自定义对象,要处理一些 ...

  8. 为什么我要放弃javaScript数据结构与算法(第五章)—— 链表

    这一章你将会学会如何实现和使用链表这种动态的数据结构,这意味着我们可以从中任意添加或移除项,它会按需进行扩张. 本章内容 链表数据结构 向链表添加元素 从链表移除元素 使用 LinkedList 类 ...

  9. [书籍翻译] 《JavaScript并发编程》第五章 使用Web Workers

    本文是我翻译<JavaScript Concurrency>书籍的第五章 使用Web Workers,该书主要以Promises.Generator.Web workers等技术来讲解Ja ...

随机推荐

  1. Bugku-CTF之矛盾

    Day5 地址:http://123.206.87.240:8002/get/index1.php      

  2. 关于python hashlib模块的使用

    hashlib hashlib主要提供字符加密功能,将md5和sha模块整合到了一起,支持md5,sha1, sha224, sha256, sha384, sha512等算法 #!/usr/bin/ ...

  3. windows下如何安装vundle?

    参考: http://blog.csdn.net/zhuxiaoyang2000/article/details/8636472 vundle是gmarik 受 ruby的 bunler的启发开发的. ...

  4. 比较好的一些 ConcurrentHashMap讲解博客

    jdk8 https://blog.csdn.net/jianghuxiaojin/article/details/52006118#commentBox jdk7.8 https://crossov ...

  5. ES6模块化操作

    在ES5中我们要进行模块化操作需要引入第三方类库,随着前后端分离,前端的业务日渐复杂,ES6为我们增加了模块化操作.模块化操作主要包括两个方面. export :负责进行模块化,也是模块的输出. im ...

  6. Unity3D学习笔记(三十四):Shader着色器(1)

    一.GPU:图形处理器,Graphics Processing Unit 显卡的处理器就是图形处理器.与CPU类似.   GPU和CPU的区别? 1.CPU主要是为了串行指令设计,GPU则是为了大规模 ...

  7. 使用Numpy实现卷积神经网络(CNN)

    import numpy as np import sys def conv_(img, conv_filter): filter_size = conv_filter.shape[1] result ...

  8. facebook api之Access Tokens之Business Manager System User

    Business Manager System User Make programatic, automated actions on ad objects or Pages, or do progr ...

  9. Linux命令去重统计排序

    利用Linux命令进行文本按行去重并按重复次数排序   linux命令行提供了非常强大的文本处理功能,组合利用linux命令能实现好多强大的功能.本文这里举例说明如何利用Linux命令行进行文本按行去 ...

  10. Bootstrap 固定导航条

    默认情况下,导航条的定位属性为 static,它的位置由它的HTML代码中定义的顺序出现,并随着页面向下滚动而消失.也可以改变它的定位方式,让它固定显示在浏览器窗口的顶部或底部. 1.固定在顶部 如果 ...