038_JavaScript对象
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对象相关推荐
- java_B站_面试题
Java面向对象有哪些特征,如何应用 面向对象编程是利用类和对象编程的一种思想.万物可归类,类是对于世界事物的高度抽象 ,不同的事物之间有不同的关系 ,一个类自身与外界的封装关系,一个父类和子类的 ...
- 史上最详细的23中设计模式解析,一个不落,理论搭配简单案例,更好理解哦
目录 一.软件设计模式的产生背景 二.软件设计模式的概念与意义 1. 软件设计模式的概念 2. 学习设计模式的意义 三.23 种设计模式的分类和功能 1. 根据目的来分 2. 根据作用范围来分 3. ...
- 在kotlin companion object中读取Bean,注入Bean对象
在kotlin companion object中读取Bean,注入Bean对象 在使用kotlin时,或多或少地会使用到一些公共组件,如 http. mongo. redis相关的组件. 使用组 ...
- IDEA自动生成对象所有set方法
idea中有一款插件能够生成对象所有的set方法,GenerateAllSetter :下载地址 步骤1:将下载好的压缩包放在自己记得的文件夹中,在idea中进行导入 步骤2:在本地选中刚才的压缩包, ...
- 基于Golang的对象序列化的程序包开发——myJsonMarshal
基于Golang的对象序列化的程序包开发--myJsonMarshal[阅读时间:约10分钟] 一.对象序列化概述 二.系统环境&项目介绍 1.系统环境 2.项目的任务要求 三.具体程序设计及 ...
- java 捕获异常并存入数据库_java异常处理,报异常的话怎么处理对象值,并持久化到数据库中...
展开全部 //没看到有人回e68a843231313335323631343130323136353331333365646233答你,我还没学到框架,不知道那个是不是可以很便捷操作你说的这样过程 / ...
- python程序如何执行死刑图片_如何判断对象已死
已死的对象就是不可能被任何途径使用的对象,有以下几种方法判断一个对象是否已经死了: 引用计数 给对象添加一个引用计数器,每当有一个地方引用他,计算器就加 1:当引用失效时,计数器减 1:任何时刻计数器 ...
- Go 学习笔记(64)— Go error.New 创建接口错误对象、fmt.Errorf 创建接口错误对象、errors.Is 和 errors.As
1. error 接口定义 除用 panic 引发中断性错误外,还可返回 error 类型错误对象来表示函数调用状态.error 接口是 Go 原生内置的类型,它的定义如下: // $GOROOT/s ...
- OpenCV 笔记(06)— Mat 结构、像素值存储方法、创建 Mat 对象各种方法、Mat 对象的运算
数字图像中的每个点都称为像素(对于图像元素),并且每个像素可以存储一个或多个值,这取决于它是否是仅存储一个值的黑白图像(也称为二进制图像,比如只存储0或1),还是存储两个值的灰度图像,或者是存储三个值 ...
最新文章
- CIO和CTO到底有什么不同?
- python入门练习题-python入门练习题2
- Android(安卓)一个简单的聊天界面的实现(eclipse实现)
- 菜鸟教程终极篇之Microsoft Windows Pre-installation Environment (Windows PE) 2.0
- Docker基础入门及示例
- AUTOSAR从入门到精通100讲(二十五)-AutoSar架构中的Methodology
- 印度首富之女大婚,贫穷限制了我的想象……
- Reveal.js:把你的 Markdown 文稿变成 PPT
- [Es] Rejecting mapping update to [xxx] as the final mapping would have more than 1 type [xxx xxx]
- Linux type stat file
- CMOS checksum error-Defaults loaded 故障解决办法
- 洛谷 P4392 Sound 静音问题
- 调制方式性能比较--BER,频带效率的极限
- robotframework 内置库DateTime,Dialogs,
- 商务谈判类毕业论文文献有哪些?
- QThread: Destroyed while thread is still running 解决方法
- HTML5视频播放器jQuery插件
- 使用VGG模型进行猫狗大战
- pe卸载linux系统软件,ciscodk教你卸载Linux软件
- $(this).addClass(‘class‘).siblings(‘class‘).removeClass(‘class‘)的作用