HTML中的Javascript

1
<script src="main.js"> 行内代码 </script>
  • 如有下载执行脚本,则忽略行内代码。
  • main.js也可以替换为URL,下载别人的JavaScript文件。
  • script标签也是按顺寻执行的。
  • 一般放在body尾部

几种属性

defer

  • 延迟执行,一般在</hteml>之后,DOMContentLoaded之前执行
  • 只对外部脚本有效

async

  • 异步执行脚本
  • 只对外部脚本有效

动态加载脚本

  • 同步加载

    1
    2
    3
    4
    let script = docunment.createElement('script');
    script.src = 'main.js';
    script.async = false;
    document.head.appendChild(script);
  • 头部提前显示声明

    1
    <link rel='preload' href="main.js">

关于src,href,rel

  • src:source 加载资源
    • esp:img script iframe
  • href: HypertexReference 超文本引用(下载但不加载)
    • esp:link a
  • rel:relationship 表明当前文档和被链接文档的关系
    • preload 预加载
    • stylesheet 样式表
    • (更多请查看文档)

对象

js学习的三种对象

  1. 内置对象: Math、Date、String、Array、Object等
  2. 自定义对象
  3. 浏览器对象—BOM

    语言基础

let const var就不说了

ES6数据类型

  1. number (NaN)
  2. string
  3. boolean
  4. object
  5. null (空指针对象,用于初始化)
  6. undefined
  7. symbol (类似于标志唯一性ID)
    • 作为对象属性名

类型判断

  • typeof 判断基本类型
  • instanceof 用到原型链(还不懂)

类型转换

  • 数值转换
    • Number(var)
    • parseInt(var,(进制))
    • parseFloat(var,(进制))
  • 字符转换
    • toString(进制) 一种成员函数
    • String() 对String进一步封装的函数

模板字面量

  • 实际上是一种表达式,求值后为字符串

  • 可跨行

  • 插值 `${ value } to the moon` value也可以是函数
  • 标签函数 (不太懂)
  • 原始字符串 String.raw 得到转义前的字符串

symbol类型

  • 不能new,直接用
  • symbol(string) string是描述
全局符号注册表

幂等:在编程中一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同。

  • symbol.for(string) string作为键
  • symbol.keyFor(symbol) 去全局注册表查找它对应的键
符号作为属性
1
2
Object.defineProperty(obj, prop, descriptor)
Object.defineProperties(obj, props)

查看文档

······待补充(太多了symbol)

object

实例中的属性方法

  1. constructor 用于创建对象
  2. hasOwnProperty(propertyName) 看看里面有没有这个属性
  3. isPrototypeOf(object) 看看是不是里面这个原型
  4. propertyIsEnumerable(propertyName) 是否用for-in语句枚举
  5. toLocalString()
  6. toString()
  7. valueOf()