2017-07-04
JavaScript
0

目录

http
DOM
BOM
引用类型
栈内存、堆内存
函数表达式
valueOf() 和 toString()

http

setcookie 和 cookie 跨域问题,图片不存在跨域问题(不下载的时候)

Access-Control-Allow-Origin等一系列是否为后端设置的确认

DOM

  • parentNode
  • nextSibling
  • preovSibling
  • firstChild
  • lastChild
  • appendChild
  • insertBefore
  • replaceChild
  • removeChild
  • clondeNode

BOM

image.png

window的一些方法:

  • window.open():打开窗口
  • window.close():可以关闭通过open打开的窗口
  • window.print():显示打印机对话框
  • window.find():显示查找对话框,无法使用

location:

  • location.assign() ---- 有历史记录,可以回退
  • location.replace() ---- 无历史记录,不能回退
  • hash: "#contents" ---- 返回#以及#紧跟着的字符
  • search:"?a=1&b=2" ---- 返回?以及?紧跟着的字符
  • (以第一个字母为准,如"#contents?a=1&b=2",此时的search值为空,
  • 而hash的值为"#contents?a=1&b=2")
  • href:"https://www.baidu.com/" ---- 返回当前完整的url
  • host:"www.baidu.com:8080" ---- 返回当前服务器名称以及端口号
  • hostname:"www.baid.com" ---- 返回不带端口号的服务器名称
  • port:"8080" ---- 返回端口号
  • portocol:"https:" ---- 返回页面使用的协议
  • pathname:"/WileyCDA/" ---- 返回URL中的目录或文件名

history:

  • history.go(-1) history.back() ---- 后退一页
  • history.go(1) history.forward() ---- 前进一页
  • history.length ---- 等于0时,说明用户打开的是第一个页面

引用类型

image.png 内置对象:

  • Global:Object,Array等,isNaN(),parseInt(),parseFloat()等
  • Math

基本包装类型(访问字符串方法时,创建实例,在实例上指定方法,销毁实例):

  • Boolean
  • Number
  • String

引用类型:

Object 本身不具有length属性

Array:length不止是只读的,改变数组的length可以改变数组长度。判断数组的方法:Array.isArray(参数)

Array内置函数:

  • 数组的增删:shift,unshift,pop,push(删除会返回当前删除值,增加会返回数组增加后的长度),splice(只返回被删除的值,且一定是数组)直接对数组进行操作
  • 数组转字符串:join(返回操作后的数组,实际数组并没有变化)
  • 数组的合并与截取:concat,slice(返回操作后的数组,实际数组并没有变化)
  • 数组的排序:sort,reverse 直接对数组进行操作
  • 数组的查找:indexOf(返回查询当前的位置,若未查询到,返回-1)
  • 数组的迭代(重要)

Date

RegExp

Function

栈内存、堆内存

变量:包含两种不同数据类型的值,为基本类型值和引用类型值。

基本类型值:String,Number,Boolean,Undefined,Null(typeof检测)

引用类型值:Object,Array,Date,Function,RegExp(instance检测,如检测这个值是不是Object的实例)

基本类型的值和地址存储在栈内存中,而引用类型的地址存储在栈内存中,值存储在堆内存中

image.png

JavaScript引擎在执行的时候,会把所有变量的声明都提升到当前作用域的最前面。

执行环境及作用域: js没有块级作用域,只有全局执行环境和局部执行环境,局部执行环境是在函数执行过程中创建。 每个执行环境都有一个与之关联的变量对象,环境中定义的所有变量和函数都保存在这个对象中。 虽然我们编写的代码无法访问这个对象,但解析器在处理数据时会在后台使用它。 这个变量对象,在执行环境创建的过程中产生。作用域链就是基于执行环境的这个变量对象的。 全局环境的变量对象位于作用域链的末端,因此访问局部变量比访问全局变量更快。

内存问题: 局部变量会在它们离开执行环境时自动解除引用,方便浏览器下次回收,全局变量只有当关闭浏览器时才会回收。js是一门具有自动垃圾收集机制的编程语言,开发人员不必关心内存和分配的原因。

函数表达式

低耦合:代码模块与模块之间没有尽量别有牵扯,能做到把这段代码单独拿出来也能用。

高内聚:代码块只和自己及自己内部的代码有关系。

函数声明会有提升,函数表达式只是变量提升

call(),apply() ==> 可以修改this的当前对象

this,arguments,内部函数搜索这两个变量时,只会搜索到其活动对象为止。

而匿名函数的执行环境通常具有全局性,如果当某个函数被作为某个对象的方法调用时,this等于那个对象

arguments是对象,具有callee属性arguments.callee等于调用自身

函数可以cs()(),前提是当cs()的时候,return出来一个函数

闭包

闭包引用外部函数变量对象中的值; 在外部函数的外部调用闭包。 理解闭包的关键在于: 外部函数调用之后其变量对象本应该被销毁,但闭包的存在使我们仍然可以访问外部函数的变量对象。

valueOf() 和 toString()

两者优先级关系:

  1. 涉及到操作符的问题,valueOf的优先级比toString的优先级高,涉及到显示问题,toString方法优先级比valueOf方法高。
  2. 只重写了toString方法的话,toString方法比原型链上的valueOf方法优先级高
  3. 只重写了valueOf方法的话,涉及到值运算优先调用valueOf方法,涉及到显示问题还是优先调用原型链上的toString方法

本文作者:BARM

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!