《Head First HTML5 javascript》第9章 认识对象
2022.11.21 第9章 认识对象
对象
对象是一个包含相关数据和方法的集合(通常由一些变量和函数组成,我们称之为对象里面的属性和方法)对象是存储在单个分组中的相关功能的集合。在 JavaScript 中,大多数事物都是对象,从作为核心功能的字符串和数组,到建立在 JavaScript 之上的浏览器 API。
构造函数
Object
构造函数将给定的值包装为一个新对象。- 如果给定的值是
[null]
或[undefined]
, 它会创建并返回一个空对象。 - 否则,它将返回一个和给定的值相对应的类型的对象。
- 如果给定值是一个已经存在的对象,则会返回这个已经存在的值(相同地址)。
在非构造函数上下文中调用时,
Object
和new Object()
表现一致。new Object() new Object(value)
创建一个新对象
let o = new Object() o.foo = 42console.log(o) // Object { foo: 42 }
使用 Object 创建 undefined 和 null 类型
下面的例子保存了一个空
Object
对象在o
:let o = new Object()
let o = new Object(undefined)
let o = new Object(null)
- 如果给定的值是
this
function Blog(body, date){this.body = body;this.date = date;}
new运算符调用
var blog = [new Blog("Got the new cube I ordered. It's a real pearl.", new Date("08/14/2008")),new Blog("second line.", new Date("08/19/2008")),new Blog("third line.", new Date("08/16/2008")),new Blog("the fourth line.", new Date("08/21/2008"))];
对象字面量(object literal)对象里的对象
function Blog(body, date){this.toString = function(){return "[" + this.date.getFullYear() + "/" + (this.date.getMonth() + 1) + "/" + this.date.getDate() + "]" + this.body;};}
Date对象
Date
对象基于 Unix Time Stamp,即自 1970 年 1 月 1 日(UTC)起经过的毫秒数。
创建一个新
Date
对象的唯一方法是通过[new](<https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/new>)
操作符,例如:let now = new Date();
若将它作为常规函数调用(即不加[new](<https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/new>)
操作符),将返回一个字符串,而非Date
对象。new Date(); new Date(value); new Date(dateString); new Date(year, monthIndex [, day [, hours [, minutes [, seconds [, milliseconds]]]]]);
设定日期数据的方法
setMonth()根据本地时间为一个日期对象设置月份。
dateObj.setMonth(monthValue[, dayValue])
monthValue
介于 0 到 11 之间的整数(表示一月到十二月)。
dayValue
从 1 到 31 之间的整数,表示月份中的第几天。0 为上个月最后一天
返回值
基于 1 January 1970 00:00:00 UTC 开始计算的毫秒数
var theBigDay = new Date(); theBigDay.setMonth(6);
setFullYea()根据本地时间为一个日期对象设置年份。
dateObj.setFullYear(yearValue[, monthValue[, dayValue]])
yearValue
指定年份的整数值,例如 1995。
monthValue
一个 0 到 11 之间的整数值,表示从一月到十二月。
dayValue
一个 1 到 31 之间的整数值,表示月份中的第几天。如果你指定了
dayValue
参数,就必须同时指定monthValue
。var theBigDay = new Date(); theBigDay.setFullYear(1997);
取得日期数据的方法
getDate()根据本地时间,返回一个指定的日期对象为一个月中的哪一日(从 1--31)
var Xmas95 = new Date("December 25, 1995 23:15:00"); var day = Xmas95.getDate();alert(day); // 25
getDay()方法根据本地时间,返回一个具体日期中一周的第几天,0 代表星期日,1 代表星期一,2 代表星期二,依次类推。
var Xmas95 = new Date("December 25, 1995 23:15:30"); var weekday = Xmas95.getDay();console.log(weekday); // 1
备注: 如果需要,可以使用
[Intl.DateTimeFormat](<https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat>)
与一个额外的options
参数,从而返回这天的全称(如"Monday"
).使用此方法,结果会更加国际化:var options = { weekday: 'long'}; console.log(new Intl.DateTimeFormat('en-US', options).format(Xmas95)); // Monday console.log(new Intl.DateTimeFormat('de-DE', options).format(Xmas95)); // Montag
getFullYear()根据本地时间返回指定日期的年份。
getFullYear()
返回的值是绝对数。对于 1000 到 9999 之间的日期getFullYear()
返回一个四位数字,如 1995。使用此函数确保在 2000 年后兼容。var today = new Date(); var year = today.getFullYear();
字符串对象
子字符串substring
返回一个字符串在开始索引到结束索引之间的一个子集,或从开始索引直到字符串的末尾的一个子集。
str.substring(indexStart[, indexEnd])
indexStart
需要截取的第一个字符的索引,该索引位置的字符作为返回的字符串的首字母。indexEnd
可选。一个 0 到字符串长度之间的整数,以该数字为索引的字符不包含在截取的字符串内。返回值
包含给定字符串的指定部分的新字符串。
substring
提取从indexStart
到indexEnd
(不包括)之间的字符。特别地:- 如果
indexStart
等于indexEnd
,substring
返回一个空字符串。 - 如果省略
indexEnd
,substring
提取字符一直到字符串末尾。 - 如果任一参数小于 0 或为 NaN ,则被当作 0。
- 如果任一参数大于
stringName.length
,则被当作stringName.length
。 - 如果
indexStart
大于indexEnd
,则substring
的执行效果就像两个参数调换了一样。见下面的例子。
var anyString = "Mozilla";// 输出 "Moz" console.log(anyString.substring(0,3)); console.log(anyString.substring(3,0)); console.log(anyString.substring(3,-3)); console.log(anyString.substring(3,NaN)); console.log(anyString.substring(-2,3)); console.log(anyString.substring(NaN,3));// 输出 "lla" console.log(anyString.substring(4,7)); console.log(anyString.substring(7,4));// 输出 "" console.log(anyString.substring(4,4));// 输出 "Mozill" console.log(anyString.substring(0,6));// 输出 "Mozilla" console.log(anyString.substring(0,7)); console.log(anyString.substring(0,10));
运用 length 属性来使用 substring()
下面一个例子运用了 String.length 属性去获取指定字符串的倒数元素。显然这个办法更容易记住,因为你不再像上面那个例子那样去记住起始位置和最终位置。
// Displays 'illa' the last 4 characters var anyString = 'Mozilla'; var anyString4 = anyString.substring(anyString.length - 4); console.log(anyString4);// Displays 'zilla' the last 5 characters var anyString = 'Mozilla'; var anyString5 = anyString.substring(anyString.length - 5); console.log(anyString5);
- 如果
转换字符串
toString返回一个表示该对象的字符串。该方法旨在重写(自定义)派生类对象的类型转换的逻辑。默认情况下,
toString()
不接受任何参数。然而,继承自Object
的对象可能用它们自己的实现重写它,这些实现可以接受参数。返回值
一个表示该对象的字符串。
const arr = [1, 2, 3];arr.toString(); // "1,2,3" Object.prototype.toString.call(arr); // "[object Array]"
String length
字符串的 **
length
**只读属性包含字符串的长度(以 UTF-16 代码单元表示)。该属性返回字符串中的代码单元数量。JavaScript 使用 UTF-16 编码,其中每个 Unicode 字符可以编码为一个或两个代码单元,因此
length
返回的值可能与字符串中 Unicode 字符的实际数量不匹配。对于拉丁文、西里尔文、众所周知的 CJK 字符等常见脚本,这应该不是问题,但如果你正在使用某些脚本,例如表情符号、数学符号或晦涩的汉字,你可能需要考虑代码单元和字符之间的差异。语言规范要求字符串的最大长度为 253 - 1 个元素,这是精确整数的上限。但是,具有此长度的字符串需要 16384TB 的存储空间,这在任何合理的设备内存中都容纳不了,因此实现倾向于降低阈值,从而允许字符串的长度方便地存储在 32 位整数中。
对于空字符串,
length
为 0。静态属性
String.length
与字符串的长度无关。它是String
函数的参数数量(简单地说,就是它有多少个形参),也就是 1。由于
length
统计的是代码单元而不是字符,如果你想得到字符的数量,你可以首先用它的迭代器分割字符串,它按字符进行迭代:function getCharacterLength(str) {// The string iterator that is used here iterates over characters,// not mere code unitsreturn [...str].length; }console.log(getCharacterLength("A\\uD87E\\uDC04Z")); // 3
基本用法
const x = "Mozilla"; const empty = "";console.log(`${x} is ${x.length} code units long`); // Mozilla is 7 code units longconsole.log(`The empty string has a length of ${empty.length}`); // The empty string has a length of 0
长度不等于字符数的字符串
const emoji = "
《Head First HTML5 javascript》第9章 认识对象相关推荐
- Javascript第五章location对象第五课
ECMAScript参考:https://blog.csdn.net/qq_30225725/article/details/88621180 DOM参考:Javascript第五章window对象的 ...
- Javascript第五章history对象第四课
ECMAScript参考:https://blog.csdn.net/qq_30225725/article/details/88621180 DOM参考:Javascript第五章window对象的 ...
- Javascript第五章document对象获取标签节点-第六课
通过ID,通过name 通过标签获取节点
- Javascript第五章window对象的事件常用方法第三课
更多免费教学文章请关注这里 HTML DOM Element 对象 HTML DOM 节点 在 HTML DOM (文档对象模型)中,每个部分都是节点: 文档本身是文档节点 所有 HTML 元素是元素 ...
- Javascript第五章倒计时第二课
HTML DOM setTimeout() 方法 ECMAScript参考:https://blog.csdn.net/qq_30225725/article/details/88621180 DOM ...
- Javascript第五章DOM简介和window对象第一课
更多免费教学文章请关注这里 ECMAScript参考:https://blog.csdn.net/qq_30225725/article/details/88621180 Javascript第五章w ...
- 《HTML5+JavaScript动画基础》——2.4 JavaScript对象
本节书摘来自异步社区<HTML5+JavaScript动画基础>一书中的第2章,第2.4节,作者:[美]Billy Lamberta , Keith Peters著,更多章节内容可以访问云 ...
- JavaScript进阶 - 第9章 DOM对象,控制HTML元素
第9章 DOM对象,控制HTML元素 9-1 认识DOM 文档对象模型DOM(Document Object Model)定义访问和处理HTML文档的标准方法.DOM 将HTML文档呈现为带有元素.属 ...
- HTML5+JavaScript动画基础 完整版 中文pdf扫描版
<HTML5+JavaScript动画基础>包括了基础知识.基础动画.高级动画.3D动画和其他技术5大部分,分别介绍了动画的基本概念.动画的JavaScript基础.动画中的三角学.渲染技 ...
最新文章
- icmp的回送和回送响应消息_领导送我1盒茶叶,我悟出了3点道理,可能还有一群人不明白...
- 工业用微型计算机笔记(5)-指令系统(2)
- Apache-Guacamole windows11 远程控制
- linux分区 挂盘,linux分区与格式化磁盘挂载磁盘与自动挂载详细教程
- ueditor编辑器php上传配置,php版本UEditor编辑器图片上传设置
- 嵌入式开发之路,从51单片机开始
- hdu 5584 gcd/lcm/数学公式
- js call与apply函数
- http://atom8023.blog.51cto.com/2651558/1333582
- TvRecyclerView
- 计算机毕设(附源码)JAVA-SSM快递代收系统
- x86嵌入式主板定制版型选购标准
- 【agc012E】Camel and Oases
- Method XXX does not exist.
- 事务4个隔离界别及脏读,不可重复读,幻读
- 端正态度:如何把工作当作自己的事业来做
- PTA滤字符、函数CHG、mystrcpy--指针练习
- 1办公自动化之批量提取文件名视频教程
- rp软件app流程图_app开发流程图_app的制作流程图
- 【Python合集系列】爬虫有什么用,网友纷纷给出自己的答案,王老师,我..我想学那个..爬虫。可以嘛?“(代码免费分享)
热门文章
- DistilBERT, a distilled version of BERT: smaller, faster, cheaper and lighter学习
- 基于人脸识别的智能服饰搭配小程序
- 计算机网络域名解析,域名解析是什么意思?
- 快应用信息流列表组件
- VSCode将Java文件编译生成的class文件存在哪的?
- c语言乐学编程作业答案,信息乐学|浅谈C语言
- js 根据秒数获取多少小时,多少分钟,多少秒
- JDO(Java Data Object )
- 从单块应用到微服务,血泪总结
- 关于组装微型计算机的叙述不正确的是,计算机与交互式白板通过USB数据线物理连接后,还要正确安装(),这样才能正常使用。...
- Javascript第五章location对象第五课