前言
日常吐槽,宅了几天,感觉又是那啥了,爬个四楼好像都有点费劲!!!
this与闭包
this
一个new的对象内部的this是指向这个对象,而其他的this则是指向window对象。
面向对象语言中 this 表示当前对象的一个引用。
类似 call() 和 apply() bind()方法可以将 this 引用到任何对象。这里不细说
举个栗子: |
上面说过一个new对象中的this才指向该对象,像p2虽然也是一个新声明的对象,
但是他因为没有new ,this也是指向window对象的
闭包
闭包就是可以访问一个对象或者是函数内部的对象或者变量,而不被外界所销毁,一个私有的栈环境
可以通过下面的例子才创建闭包
也是菜鸟里的一个例子 |
菜鸟的话:
变量 add 指定了函数自我调用的返回字值。
自我调用函数只执行一次。设置计数器为 0。并返回函数表达式。
add变量可以作为一个函数使用。非常棒的部分是它可以访问函数上一层作用域的计数器。
这个叫作 JavaScript 闭包。它使得函数拥有私有变量变成可能。
计数器受匿名函数的作用域保护,只能通过 add 方法修改。对我来说:
分析一下add的this属于谁?答案还是window,但是如何能访问并且修改到add里面的counter呢,
就是因为上一个博客里也有讲的静态作用域啦,向上一层寻找,找到counter。
JSON与js对象的区别与联系(转自菜鸟)
简单来说,可以这么理解:JSON 是 JS 对象的字符串表示法。它使用文本表示一个 JS 对象的信息,(JSON)本质是一个字符串。
var obj = {a: 'Hello', b: 'World'}; //这是一个js对象,注意js对象的键名也是可以使用引号包裹的,这里的键名就不用引号包含 |
说句不严谨的话:JSON.parse() 就是字符串转 js 对象, JSON.stringify()就是 js 对象转字符串,它们前提是要 json 格式才有意义。
变量提升
先使用,初始化
再定义
t = 3;//正确 |
null与undefined
- undefined:是所有没有赋值变量的默认值,自动赋值。
- null:主动释放一个变量引用的对象,表示一个变量不再指向任何对象地址,用来释放内存,空间。