2022.11.21 第9章 认识对象

对象

对象是一个包含相关数据和方法的集合(通常由一些变量和函数组成,我们称之为对象里面的属性和方法)对象是存储在单个分组中的相关功能的集合。在 JavaScript 中,大多数事物都是对象,从作为核心功能的字符串和数组,到建立在 JavaScript 之上的浏览器 API。

  1. 构造函数

    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)
    
  2. this

    function Blog(body, date){this.body = body;this.date = date;}
    
  3. 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"))];
    
  4. 对象字面量(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)起经过的毫秒数。

  1. 创建一个新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]]]]]);
    
  2. 设定日期数据的方法

    1. 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);
      
    2. setFullYea()根据本地时间为一个日期对象设置年份。

      dateObj.setFullYear(yearValue[, monthValue[, dayValue]])
      

      yearValue

      指定年份的整数值,例如 1995。

      monthValue

      一个 0 到 11 之间的整数值,表示从一月到十二月。

      dayValue

      一个 1 到 31 之间的整数值,表示月份中的第几天。如果你指定了 dayValue 参数,就必须同时指定 monthValue

      var theBigDay = new Date();
      theBigDay.setFullYear(1997);
      
  3. 取得日期数据的方法

    1. getDate()根据本地时间,返回一个指定的日期对象为一个月中的哪一日(从 1--31)

      var Xmas95 = new Date("December 25, 1995 23:15:00");
      var day = Xmas95.getDate();alert(day); // 25
      
    2. 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
      
    3. getFullYear()根据本地时间返回指定日期的年份。

      getFullYear()返回的值是绝对数。对于 1000 到 9999 之间的日期

      getFullYear()返回一个四位数字,如 1995。使用此函数确保在 2000 年后兼容。

      var today = new Date();
      var year = today.getFullYear();
      

字符串对象

  1. 子字符串substring

    返回一个字符串在开始索引到结束索引之间的一个子集,或从开始索引直到字符串的末尾的一个子集。

    str.substring(indexStart[, indexEnd])
    

    indexStart需要截取的第一个字符的索引,该索引位置的字符作为返回的字符串的首字母。indexEnd可选。一个 0 到字符串长度之间的整数,以该数字为索引的字符不包含在截取的字符串内。

    返回值

    包含给定字符串的指定部分的新字符串。

    substring 提取从 indexStart 到 indexEnd(不包括)之间的字符。特别地:

    • 如果 indexStart 等于 indexEndsubstring 返回一个空字符串。
    • 如果省略 indexEndsubstring 提取字符一直到字符串末尾。
    • 如果任一参数小于 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);
    
  2. 转换字符串

    toString返回一个表示该对象的字符串。该方法旨在重写(自定义)派生类对象的类型转换的逻辑。默认情况下,toString()不接受任何参数。然而,继承自 Object的对象可能用它们自己的实现重写它,这些实现可以接受参数。

    返回值

    一个表示该对象的字符串。

    const arr = [1, 2, 3];arr.toString(); // "1,2,3"
    Object.prototype.toString.call(arr); // "[object Array]"
    
  3. 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章 认识对象相关推荐

    1. Javascript第五章location对象第五课

      ECMAScript参考:https://blog.csdn.net/qq_30225725/article/details/88621180 DOM参考:Javascript第五章window对象的 ...

    2. Javascript第五章history对象第四课

      ECMAScript参考:https://blog.csdn.net/qq_30225725/article/details/88621180 DOM参考:Javascript第五章window对象的 ...

    3. Javascript第五章document对象获取标签节点-第六课

      通过ID,通过name 通过标签获取节点

    4. Javascript第五章window对象的事件常用方法第三课

      更多免费教学文章请关注这里 HTML DOM Element 对象 HTML DOM 节点 在 HTML DOM (文档对象模型)中,每个部分都是节点: 文档本身是文档节点 所有 HTML 元素是元素 ...

    5. Javascript第五章倒计时第二课

      HTML DOM setTimeout() 方法 ECMAScript参考:https://blog.csdn.net/qq_30225725/article/details/88621180 DOM ...

    6. Javascript第五章DOM简介和window对象第一课

      更多免费教学文章请关注这里 ECMAScript参考:https://blog.csdn.net/qq_30225725/article/details/88621180 Javascript第五章w ...

    7. 《HTML5+JavaScript动画基础》——2.4 JavaScript对象

      本节书摘来自异步社区<HTML5+JavaScript动画基础>一书中的第2章,第2.4节,作者:[美]Billy Lamberta , Keith Peters著,更多章节内容可以访问云 ...

    8. JavaScript进阶 - 第9章 DOM对象,控制HTML元素

      第9章 DOM对象,控制HTML元素 9-1 认识DOM 文档对象模型DOM(Document Object Model)定义访问和处理HTML文档的标准方法.DOM 将HTML文档呈现为带有元素.属 ...

    9. HTML5+JavaScript动画基础 完整版 中文pdf扫描版

      <HTML5+JavaScript动画基础>包括了基础知识.基础动画.高级动画.3D动画和其他技术5大部分,分别介绍了动画的基本概念.动画的JavaScript基础.动画中的三角学.渲染技 ...

    最新文章

    1. icmp的回送和回送响应消息_领导送我1盒茶叶,我悟出了3点道理,可能还有一群人不明白...
    2. 工业用微型计算机笔记(5)-指令系统(2)
    3. Apache-Guacamole windows11 远程控制
    4. linux分区 挂盘,linux分区与格式化磁盘挂载磁盘与自动挂载详细教程
    5. ueditor编辑器php上传配置,php版本UEditor编辑器图片上传设置
    6. 嵌入式开发之路,从51单片机开始
    7. hdu 5584 gcd/lcm/数学公式
    8. js call与apply函数
    9. http://atom8023.blog.51cto.com/2651558/1333582
    10. TvRecyclerView
    11. 计算机毕设(附源码)JAVA-SSM快递代收系统
    12. x86嵌入式主板定制版型选购标准
    13. 【agc012E】Camel and Oases
    14. Method XXX does not exist.
    15. 事务4个隔离界别及脏读,不可重复读,幻读
    16. 端正态度:如何把工作当作自己的事业来做
    17. PTA滤字符、函数CHG、mystrcpy--指针练习
    18. 1办公自动化之批量提取文件名视频教程
    19. rp软件app流程图_app开发流程图_app的制作流程图
    20. 【Python合集系列】爬虫有什么用,网友纷纷给出自己的答案,王老师,我..我想学那个..爬虫。可以嘛?“(代码免费分享)

    热门文章

    1. DistilBERT, a distilled version of BERT: smaller, faster, cheaper and lighter学习
    2. 基于人脸识别的智能服饰搭配小程序
    3. 计算机网络域名解析,域名解析是什么意思?
    4. 快应用信息流列表组件
    5. VSCode将Java文件编译生成的class文件存在哪的?
    6. c语言乐学编程作业答案,信息乐学|浅谈C语言
    7. js 根据秒数获取多少小时,多少分钟,多少秒
    8. JDO(Java Data Object )
    9. 从单块应用到微服务,血泪总结
    10. 关于组装微型计算机的叙述不正确的是,计算机与交互式白板通过USB数据线物理连接后,还要正确安装(),这样才能正常使用。...