1. 一切皆对象

1.1. 在JavaScript中, 几乎"所有事物"都是对象。

  • 布尔是对象(如果用new关键词定义)
  • 数字是对象(如果用new关键词定义)
  • 字符串是对象(如果用new关键词定义)
  • 数组永远都是对象
  • 函数永远都是对象
  • 对象永远都是对象
  • 日期永远都是对象
  • 正则表达式永远都是对象
  • ......

1.2. 所有JavaScript值, 除了原始值, 都是对象。

2. 对象是包含变量的变量

2.1. JavaScript变量能够包含单个的值:

var person = "Bill Gates";

2.2. JavaScript对象也是变量, 但是对象能够包含很多值。

2.3. JavaScript对象值按照名称 : 值对的形式编写(名称和值以冒号分隔)。

2.4. 实例

var person = {firstName: "Bill", lastName: "Gates", age: 62, eyeColor: "blue"};

2.5. JavaScript对象是命名值的集合。

3. 创建JavaScript对象

3.1. 使用文本的方式创建单个对象。

3.2. 使用new Object()创建单个对象。

3.3. 定义对象构造器, 然后使用new关键字创建构造类型的对象。

3.4. 在ECMAScript 5中, 也可以通过函数Object.create()来创建对象。

4. 使用文本的方式创建对象

4.1. 文本的方式创建对象指的是花括号{}中的名称:值对。

4.2. 实例

var person = {firstName: "Bill", lastName: "Gates", age: 62, eyeColor: "blue"};

4.3. 文本的方式是创建对象的最简单方法。

5. 使用new关键字创建对象

5.1. 使用new Object()创建对象:

var person = new Object();
person.firstName = "Bill";
person.lastName = "Gates";
person.age = 50;
person.eyeColor = "blue"; 

5.2. 上面的两个例子, 使用文本的方式和new关键字创建对象, 结果是一样的。

5.3. 出于简易性、可读性和执行速度的考虑, 请使用文本的方式创建对象。

6. 对象引用类型

6.1. 对象是通过引用来寻址, 而非值。

6.2. 有一个person对象, 下面的语句不会创建person的副本:

var person = {firstName: "Bill", lastName: "Gates", age: 62, eyeColor: "blue"};
var obj = person;

6.3. 对象obj并非person的副本, 它就是person。obj和person是同一个对象。

6.4. 对obj的任何改变都将改变person, 因为obj和person是相同的对象。

6.4. 实例

var person = {firstName: "Bill", lastName: "Gates", age: 62, eyeColor: "blue"};
var obj = person;var x = 5;
var y = x;obj.age = 16; // 这将同时改变obj.age和person.age
y = 10; // x = 5, y = 10。改变y和x无关

7. 对象属性

7.1. JavaScript对象中的命名值, 被称为属性。

7.2. JavaScript对象是无序属性的集合。

7.3. 属性通常可以被修改、添加和删除, 但是某些属性是只读的。

8. 访问属性

8.1. 访问对象属性的语法是:

objectName.property
或者:
objectName["property"]
或者:
objectName[expression]

9. for...in循环遍历对象的属性

9.1. 可以使用for...in循环遍历对象的可枚举的属性。

9.2. 语法

for (variable in object) {要执行的代码
}

9.3. for...in循环中的代码块会为每个属性执行一次。

10. 添加、修改属性

10.1. 可以通过给对象新属性赋值的方式, 向对象添加属性。

10.2. 可以通过给对象已有属性赋值的方式, 修改属性。

10.3. 实例

var person = {firstName: "Bill", lastName: "Gates", age: 62, eyeColor: "blue"};person.nationality = "English"; // 添加属性
person.nationality = "Japanese"; // 修改属性

11. this关键词

11.1. 在JavaScript中, 被称为this的事物是代码的"拥有者"。

11.2. this的值, 在对象中使用时, 就是对象本身。

11.3. 在构造器函数和方法中, this是没有值的。它是新对象的替代物。当一个新对象被创建时, this的值会成为这个新对象。

11.4. 请注意this并不是变量。它是关键词。您无法改变this的值。

12. 对象方法

12.1. 方法是可以在对象上执行的动作。

12.2. 对象方法是包含函数定义的对象属性。

12.3. JavaScript对象是被称为属性和方法的命名值的容器。

12.4. 请使用如下语法创建对象方法:

methodName : function() { 代码行 }

13. 添加、修改方法

13.1. 同样可以通过给对象新属性赋值的方式, 向对象添加方法, 只不过属性的值是方法。

13.2. 同样可以通过给对象已有方法赋值的方式, 修改方法。

// 添加方法
person.fullName = function () {return this.firstName + " " + this.lastName;
};
// 修改方法
person.fullName = function () {return (this.firstName + ' ' + this.lastName).toUpperCase();
};

14. 访问对象方法

14.1. 请通过如下语法来访问对象方法:

objectName.methodName()

14.2. fullName属性在被通过()调用后会以函数形式执行。您通常会把fullName()描述为person对象的方法, 把fullName描述为属性。

person.fullName();

14.3. 如果您访问fullName属性时没有使用(), 则将返回函数定义。

person.fullName;

15. 删除属性和方法

15.1. delete关键词从对象中删除属性和方法:

var person = {firstName: "Bill", lastName: "Gates", age: 62, eyeColor: "blue"};
person.fullName = function () {return this.firstName + " " + this.lastName;
};delete person.age;   // 或delete person["age"];
delete persion.fullName;

16. 例子

16.1. 代码

<!DOCTYPE html>
<html lang="zh-CN"><head><meta charset="utf-8" /><title>对象</title></head><body><script type="text/javascript">// 创建对象var person = {firstName: 'Bill',lastName: 'Gates',fullName: function() {return this.firstName + ' ' + this.lastName;}};for(let item in person){if ((typeof person[item]) == 'function') {document.write(person[item]() + '<br />');} else {document.write(person[item] + '<br />');}}document.write('<hr />');// 给对象添加新属性person.id = 1001;// 给对象添加方法person.toUpperFullName = function() {return (this.firstName + ' ' + this.lastName).toUpperCase();};for(let item in person){if ((typeof person[item]) == 'function') {document.write(person[item]() + '<br />');} else {document.write(person[item] + '<br />');}}document.write('<hr />');// 修改属性person.firstName = 'zhang';person.lastName = 'san';person.toUpperFullName = function() {return '名字大写: ' + (this.firstName + ' ' + this.lastName).toUpperCase();};// 删除属性delete person.id;delete person.fullName;for(let item in person){if ((typeof person[item]) == 'function') {document.write(person[item]() + '<br />');} else {document.write(person[item] + '<br />');}}document.write('<hr />');document.write(person.toUpperFullName + '<br />');</script></body>
</html>

16.2. 效果图

17. 对象的键

17.1. 对象键通常我们使用: 数字字面量(可以定义类数组对象)、标识符和字符串。

17.2. 使用数组可以通用访问这三种键。

17.3. 使用数组可以使用表达式动态生成键。

17.4. 例子

17.4.1. 代码

<!DOCTYPE html>
<html><head><title>对象的键数字字面量、标识符和字符串</title></head><body><script type="text/javascript">var obj = {0: 100001, age: 18, "name": 'zhangsan'};// 数字字面量键只能用数组访问document.write('id: ' + obj[0] + '<br />');// 标识符键可以通过数组和.key方式访问document.write('age: ' + obj["age"] + '<br />');document.write('age: ' + obj.age + '<br />');// 字符串键可以通过数组和.key方式访问document.write('name: ' + obj["name"] + '<br />');document.write('name: ' + obj.name + '<br />');// 使用表达式键document.write('name: ' + obj["na" + "me"] + '<br />');</script></body>
</html>

17.4.2. 效果图

038_JavaScript对象相关推荐

  1. java_B站_面试题

    Java面向对象有哪些特征,如何应用 ​ 面向对象编程是利用类和对象编程的一种思想.万物可归类,类是对于世界事物的高度抽象 ,不同的事物之间有不同的关系 ,一个类自身与外界的封装关系,一个父类和子类的 ...

  2. 史上最详细的23中设计模式解析,一个不落,理论搭配简单案例,更好理解哦

    目录 一.软件设计模式的产生背景 二.软件设计模式的概念与意义 1. 软件设计模式的概念 2. 学习设计模式的意义 三.23 种设计模式的分类和功能 1. 根据目的来分 2. 根据作用范围来分 3. ...

  3. 在kotlin companion object中读取Bean,注入Bean对象

    在kotlin companion object中读取Bean,注入Bean对象 在使用kotlin时,或多或少地会使用到一些公共组件,如 http. mongo. redis相关的组件.   使用组 ...

  4. IDEA自动生成对象所有set方法

    idea中有一款插件能够生成对象所有的set方法,GenerateAllSetter :下载地址 步骤1:将下载好的压缩包放在自己记得的文件夹中,在idea中进行导入 步骤2:在本地选中刚才的压缩包, ...

  5. 基于Golang的对象序列化的程序包开发——myJsonMarshal

    基于Golang的对象序列化的程序包开发--myJsonMarshal[阅读时间:约10分钟] 一.对象序列化概述 二.系统环境&项目介绍 1.系统环境 2.项目的任务要求 三.具体程序设计及 ...

  6. java 捕获异常并存入数据库_java异常处理,报异常的话怎么处理对象值,并持久化到数据库中...

    展开全部 //没看到有人回e68a843231313335323631343130323136353331333365646233答你,我还没学到框架,不知道那个是不是可以很便捷操作你说的这样过程 / ...

  7. python程序如何执行死刑图片_如何判断对象已死

    已死的对象就是不可能被任何途径使用的对象,有以下几种方法判断一个对象是否已经死了: 引用计数 给对象添加一个引用计数器,每当有一个地方引用他,计算器就加 1:当引用失效时,计数器减 1:任何时刻计数器 ...

  8. Go 学习笔记(64)— Go error.New 创建接口错误对象、fmt.Errorf 创建接口错误对象、errors.Is 和 errors.As

    1. error 接口定义 除用 panic 引发中断性错误外,还可返回 error 类型错误对象来表示函数调用状态.error 接口是 Go 原生内置的类型,它的定义如下: // $GOROOT/s ...

  9. OpenCV 笔记(06)— Mat 结构、像素值存储方法、创建 Mat 对象各种方法、Mat 对象的运算

    数字图像中的每个点都称为像素(对于图像元素),并且每个像素可以存储一个或多个值,这取决于它是否是仅存储一个值的黑白图像(也称为二进制图像,比如只存储0或1),还是存储两个值的灰度图像,或者是存储三个值 ...

最新文章

  1. CIO和CTO到底有什么不同?
  2. python入门练习题-python入门练习题2
  3. Android(安卓)一个简单的聊天界面的实现(eclipse实现)
  4. 菜鸟教程终极篇之Microsoft Windows Pre-installation Environment (Windows PE) 2.0
  5. Docker基础入门及示例
  6. AUTOSAR从入门到精通100讲(二十五)-AutoSar架构中的Methodology
  7. 印度首富之女大婚,贫穷限制了我的想象……
  8. Reveal.js:把你的 Markdown 文稿变成 PPT
  9. [Es] Rejecting mapping update to [xxx] as the final mapping would have more than 1 type [xxx xxx]
  10. Linux type stat file
  11. CMOS checksum error-Defaults loaded 故障解决办法
  12. 洛谷 P4392 Sound 静音问题
  13. 调制方式性能比较--BER,频带效率的极限
  14. robotframework 内置库DateTime,Dialogs,
  15. 商务谈判类毕业论文文献有哪些?
  16. QThread: Destroyed while thread is still running 解决方法
  17. HTML5视频播放器jQuery插件
  18. 使用VGG模型进行猫狗大战
  19. pe卸载linux系统软件,ciscodk教你卸载Linux软件
  20. $(this).addClass(‘class‘).siblings(‘class‘).removeClass(‘class‘)的作用

热门文章

  1. 3D网页游戏场景打包与加载
  2. IBM X3650 M3服务器上RAID配置实战
  3. linux用c++调用动态库
  4. 直面故障,我们该怎么做?
  5. POP缩小区域扩张导致的延迟差距—Vecloud微云
  6. django xadmin 1不在可用的选项中
  7. python新手菜鸟之基础篇
  8. POJ 2387 Til the Cows Come Home
  9. QT ToolBar 工具栏浮动状态
  10. [CareerCup] 9.5 Permutations 全排列