一、Date

Date实例用来处理日期和时间。Date对象基于1970年1月1日(格林威治时间)世界标准时间起经过的毫秒数。
常用:
new Date();
new Date(value);
new Date(dateString);
new Date(year, month[, day[, hour[, minutes[, seconds[, milliseconds]]]]]); (注意月份是从0开始的)

参数:
    如果没有输入任何参数,则Date的构造器会依据系统设置的当前时间来创建一个Date对象。

value:代表自1970年1月1日00:00:00 (世界标准时间) 起经过的毫秒数。

dateString:表示日期的字符串值。(忽略)

year:代表年份的整数值。为了避免2000年问题最好指定4位数的年份; 使用 1998, 而不要用 98.

month:代表月份的整数值从0(1月)到11(12月)。

day:代表一个月中的第几天的整数值,从1开始。

hour:代表一天中的小时数的整数值 (24小时制)。

minute:分钟数。

second:秒数。

millisecond:表示时间的毫秒部分的整数值

二、Math

Math 是一个内置对象, 它具有数学常数和函数的属性和方法。但Math不是一个函数对象。
与其他全局对象不同的是,Math不是一个构造器。
Math的所有属性和方法都是静态的
Math.abs(x):  返回x的绝对值.
Math.ceil(x): 返回x向上取整后的值.
Math.floor(x): 返回小于x的最大整数。
Math.round(x): 返回四舍五入后的整数.
Math.sqrt(x): 返回x的平方根.
Math.pow(x,y): 返回x的y次幂.
Math.max([x[,y[,…]]]): 返回0个到多个数值中最大值.
Math.min([x[,y[,…]]]): 返回0个到多个数值中最小值.
Math.random(): 返回0到1之间的伪随机数.
Math.cos(x): 返回x的余弦值.
Math.sin(x): 返回正弦值.
Math.tan(x): 返回x的正切值.

角度转弧度:
        角度*PI/180
  弧度转角度:   
        弧度*180/PI

三、Global

Global (全局)对象可以说是 ECMAScript 中最特别的一个对象了,因为不管你从什么角度上看,这个对象都是不存在的.

换句话说,不属于任何其他对象的属性和方法,最终都是它的属性和方法。

https://developer.mozilla.org/zh-CN/docs/Web/JavaScript

属性:

Object Function Array Date Math     Infinity NaN   null undefined

Boolean Number String

Error      RegExp

JSON     (es5)

Generator     Promise Map Set  Symbol            (es6)

方法:

eval() (出于安全性考虑,不用)    isNaN()  parseFloat(不用)

parseInt:将字符串两边的空格去掉,然后观察这个字符串是否以数字开头,如果以数字开头就转换成数字,否则就是NaN

四、包装类

(隐式)组包:将基本数据类型  转换成 引用数据类型
(隐式)拆包:将引用数据类型 转换成 基本数据类型

显式)组包 : new Number(1)
  (显式)拆包: test.valueof()

不同类型对象的valueOf()方法的返回值
    对象                                  返回值
    Boolean                              布尔值。
    Number                               数字值。
    String                               字符串值。

Array                                返回数组对象本身。

Date                                 存储的时间是从 1970 年 1 月 1 日午夜开始计的毫秒数 UTC。
    Function                             函数本身。
    Object                               对象本身。这是默认情况。

Math 和 Error 对象没有 valueOf 方法

1、String

(1)获取字符串的长度:str.length

(2)获取字符串指定位置上的字符单元:

①:str.charAt(index)

作用:从一个字符串中返回指定的字符

语法:str.charAt(index)

参数:index    一个介于0和字符串长度减1之间的整数。(0~length-1)

返回值:指定的字符

注意点:如果没有提供索引,charAt()将使用0

如果超过字符串长度减1,charAt()将返回空白字符串

②:[index]

[]的形式也可以用来访问字符串中的指定字符,但这种方式是在ES5中定义的,部分浏览器会有兼容性问题。

(3)获取字符串在原字符串中的下标位置

①:str.indexOf

作用:在fromIndex位置开始搜索str中第一次出现searchValue的位置

语法:str.indexOf(searchValue[, fromIndex])

参数

searchValue:一个字符串表示被查找的值

fromIndex 可选:开始查找的位置。可以是任意整数。默认值为 0。

返回值:指定值的第一次出现的索引; 如果没有找到 -1。

注意点

如果 fromIndex < 0 则查找整个字符串(如同传进了 0)。

被查找的字符串是一个空字符串,此时返回 0

如果 fromIndex >= str.length,则该方法返回 -1,

被查找的字符串是一个空字符串,此时返回 str.length

②:str.lastindexOf

作用:在fromIndex位置开始搜索str中最后一次出现searchValue的位置

同上

(4)字符串截取

①:str.slice(beginSlice[, endSlice])

            作用:提取一个字符串的一部分,并返回一新的字符串

语法:str.slice(beginSlice[, endSlice])

参数

                 beginSlice:

从该索引(以0为基数)处开始提取原字符串中的字符。

endSlice:

可选。在该索引(以 0 为基数)处结束提取字符串。如果省略该参数,slice会一直提取到字符串末尾。

返回值: 返回一个从原字符串中提取出来的新字符串

注意:

如果beginSlice为负数,会被当做 sourceLength + beginSlice 看待,这里的sourceLength 是字符串的长度 。如果加完还是负数则看为0。endSlice同理

如果beginSlice >= endSlice,提出的是空白字符串

slice方法提取的范围是左闭右开的

②:str.substring(indexStart[, indexEnd])

              与slice及其类似。但是需要注意的是

如果 indexStart 等于 indexEnd,substring 返回一个空字符串。

如果 indexStart 大于 indexEnd,则 substring 的执行效果就像两个参数调换了一样

如果任一参数小于 0 或为 NaN,则被当作 0。

如果任一参数大于 stringName.length,则被当作 stringName.length。

③:str.substr(start[, length])

             作用:返回一个字符串中从指定位置开始到指定字符数的字符

             语法:str.substr(start[, length])

             参数:

                  start:开始提取字符的位置。

length:可选。提取的字符数

             返回值: 返回一个从原字符串中提取出来的新字符串

             注意

                 如果start为负值,则被看作 strLength + start,其中 strLength 为字符串的长度。如果加完还是负数则看为0

如果 start 为正值,且大于或等于字符串的长度,则 substr 返回一个空字符串

如果 length 为 0 或负值,则 substr 返回一个空字符串

(5)字符串拼接

str.concat(string2, string3[, ..., stringN])

          作用: 将一个或多个字符串与原字符串连接合并,形成一个新的字符串并返回

          语法:str.concat(string2, string3[, ..., stringN])

          参数:string2...stringN

和原字符串连接的多个字符串

          返回值: 合并的新字符串

(6)大小写转化方法

str.toUpperCase()

str.toLowerCase()

返回值: 一个新的字符串,表示串转换为大/小写的调用字符

(7)首位去空格

        作用:

trim() 方法会从一个字符串的两端删除空白字符。在这个上下文中的空白字符是所有的空白字符 (space, tab, no-break space 等)

        语法:str.trim()

2.Number

Number对象是一个数值的对象包装器

3.Boolean

Boolean对象是一个布尔值的对象包装器

五、Error

  通过Error的构造器可以创建一个错误对象。当运行时错误产生时,Error的实例对象会被抛出

六、强制类型转换

1.toString:

(先调用toString方法,在调用valueof方法)

基本类型值的字符串化规则为:
             null 转换为 "null"
             undefined 转换为 "undefined"
             true 转换为 "true" ; false转换为"false"
             数字的字符串化则遵循通用规则
                 1 转换为 "1" (当然可能会有指数的形式 1.07e21)

引用数据类型 ---> 字符串
             先调用引用数据类型 toString方法 观察方法是否返回了基本数据类型
                如果是基本数据类型 ---> 使用 基本类型值的字符串化规则
                如果不是基本数据类型 ---> 调用valueof方法
             后调用valueof方法
                如果是基本数据类型 ---> 使用 基本类型值的字符串化规则
                如果不是基本数据类型 ---> 报错


不同类型对象的valueOf()方法的返回值
     对象                                  返回值
     Boolean                              布尔值。
     Number                               数字值。
     String                               字符串值。


Array                                返回数组对象本身。


Date                                 存储的时间是从 1970 年 1 月 1 日午夜开始计的毫秒数 UTC。
     Function                             函数本身。
     Object                               对象本身。这是默认情况。


Math 和 Error 对象没有 valueOf 方法

2.toNumber:

(先调用valueof方法,再调用toString方法)

它负责处理非数字 转化为 数字。

基本类型值的数字化规则为:

Null==>0 ; undefined==>NaN

Boolean:true==>1 false==>0

字符串:

就是把字符串两边的空白字符去掉,然后把两边的引号去掉,

看它能否组成一个合法的数字。

如果是,转化结果就是这个数字;否则,结果是NaN。

当然也有例外,比如空白字符串转化为数字的结果是0。

引用数据类型ToPrimitive(valueof - tostring)

 

3.toBoolen


假值 --->false

真值 ---> true


以下这些是假值:
             undefined
             null
             false
             +0 、 -0 和 NaN
             ""


真值就是假值列表之外的值。

4.ToPrimitive

检查该值是否有 valueOf() 方法。如果有并且返回基本类型值,就使用该值进行强制类型转换。

如果没有就使用 toString() 的返回值(如果存在)来进行强制类型转换。

如果 valueOf() 和 toString() 均不返回基本类型值,会产生 TypeError 错误

总结:

在js中只存在强制类型转换
强制类型转换分为:
显示强制类型转换:
                          toSring 将String函数 普通调用
toNumber 将Number函数 普通调用
              隐式强制类型转换:
                                   正号+()
toBoolen
==操作

+

字符串拼接
    算术运算
    正号

如果某个操作数是字符串 + 将进行拼接操作
   遇到对象 则ToPrimitive()

toBoolean

(1) if (..) 语句中的条件判断表达式。
(2) for ( .. ; .. ; .. ) 语句中的条件判断表达式(第二个)。
(3) while (..) 和 do..while(..) 循环中的条件判断表达式。
(4) ? : 中的条件判断表达式。
(5) 逻辑运算符 || (逻辑或)和 && (逻辑与)左边的操作数(作为条件判断表达式)

a || b;
    大致相当于 (roughly equivalent to):
    a ? a : b;

a && b;
    大致相当于 (roughly equivalent to):
    a ? b : a;                          返回值:表达式的结果

不一定是布尔值

==操作符

  有和有 统一往数字转
  无和无永远是true
  有和无永远是fasle
  NaN 不等 NaN

Array.prototype.valueOf=function () {
    return true
    }
    console.log([1,2,3] == "1");

输出结果为 true

 

JavaScript笔记(6)的更多相关文章

  1. [Effective JavaScript 笔记] 第4条:原始类型优于封闭对象

    js有5种原始值类型:布尔值.数字.字符串.null和undefined. 用typeof检测一下: typeof true; //"boolean" typeof 2; //&q ...

  2. [Effective JavaScript 笔记] 第5条:避免对混合类型使用==运算符

    “1.0e0”=={valueOf:function(){return true;}} 是值是多少? 这两个完全不同的值使用==运算符是相等的.为什么呢?请看<[Effective JavaSc ...

  3. [Effective JavaScript 笔记]第3章:使用函数--个人总结

    前言 这一章把平时会用到,但不会深究的知识点,分开细化地讲解了.里面很多内容在高3等基础内容里,也有很多讲到.但由于本身书籍的篇幅较大,很容易忽视对应的小知识点.这章里的许多小提示都很有帮助,特别是在 ...

  4. [Effective JavaScript 笔记]第27条:使用闭包而不是字符串来封装代码

    函数是一种将代码作为数据结构存储的便利方式,代码之后可以被执行.这使得富有表现力的高阶函数抽象如map和forEach成为可能.它也是js异步I/O方法的核心.与此同时,也可以将代码表示为字符串的形式 ...

  5. [Effective JavaScript 笔记]第28条:不要信赖函数对象的toString方法

    js函数有一个非凡的特性,即将其源代码重现为字符串的能力. (function(x){ return x+1 }).toString();//"function (x){ return x+ ...

  6. 从头开始学JavaScript 笔记(一)——基础中的基础

    原文:从头开始学JavaScript 笔记(一)--基础中的基础 概要:javascript的组成. 各个组成部分的作用 . 一.javascript的组成   javascript   ECMASc ...

  7. 【原】javascript笔记之Array方法forEach&map&filter&some&every&reduce&reduceRight

    做前端有多年了,看过不少技术文章,学了新的技术,但更新迭代快的大前端,庞大的知识库,很多学过就忘记了,特别在项目紧急的条件下,哪怕心中隐隐约约有学过一个方法,但会下意识的使用旧的方法去解决,多年前ES ...

  8. JavaScript笔记目录

    JavaScript笔记目录 一.JavaScript简介 二.在HTML中使用JavaScript ...持续更新中,敬请期待

  9. 蛋糕仙人的javascript笔记

    蛋糕仙人的javascript笔记:https://www.w3cschool.cn/kesyi/kesyi-nqej24rv.html

  10. JavaScript笔记(第一章,第二章)

    JavaScript笔记(第一章,第二章) 第一章: <meta http-equiv="Content-Type" content="text/html; cha ...

随机推荐

  1. Qt 5.3 下OpenCV 2.4.11 开发(5)最高效的像素引用

    OpenCV 提供一个函数 getTickCount() ,能够用来測量一段代码的执行时间.另一个函数 getTickFrequency() 用来返回每秒内的时钟周期.代码操作例如以下: double ...

  2. [MST] Build Forms with React to Edit mobx-state-tree Models

    We will expand our UI, and give the user the possibility to edit his wishlist. We will use the earli ...

  3. HDOJ 题目1520 Anniversary party(树形dp)

    Anniversary party Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others ...

  4. 教你怎样做个有“钱”途的測试project师

    百度百科说測试project师这一职业的待遇,薪酬上升空间很大.但測试project师也有自己的烦恼,比方在程序出错后,将问题反馈给程序猿,然后程序猿给的答复是:"oh,howisthatp ...

  5. 公布Qt Widgets桌面应用程序的方法

    公布Qt Widgets桌面应用程序的方法 Qt是一款优秀的跨平台开发框架,它能够在桌面.移动平台以及嵌入式平台上执行.眼下Qt 5介绍程序公布的文章帖子比較少.大家又很想要知道怎样公布Qt应用程序, ...

  6. Java多线程理解:线程安全的集合对象

    1.概念介绍 线程安全就是多线程访问时,采用了加锁机制,当一个线程访问该类的某个数据时,进行保护,其他线程不能进行访问直到该线程读取完,其他线程才可使用.不会出现数据不一致或者数据污染. 线程不安全就 ...

  7. thinkphp5项目--个人博客(一)

    thinkphp5项目--个人博客(一) 项目地址 fry404006308/personalBlog: personalBloghttps://github.com/fry404006308/per ...

  8. 1.C语言指针学习之外挂篇

    学习了c语言的指针,那么指针能做什么呢,首先,他可以写外挂 首先我们来编写一个dll,挂载到植物大战僵尸上,记住是dll,因为如果你创建一个应用程序,该应用程序是不能操作其他程序的地址的. 第一步,打 ...

  9. 继承—people

    public class People { private double height;//身高 private double weight;//体重 public double getHeight( ...

  10. dedecms实现表单提交数据到指定的邮箱

    1.http://blog.csdn.net/webnoties/article/details/17219219 2.http://www.jz96.com/451.html 3.https://m ...