随笔分类 -  ECMAScript

摘要:也许你经常听别人说"javascript中万物皆对象",这句话是错的 在讲这个问题前,我们来了解下对象的声明方式 1.文字语法 2.构造形式 唯一的区别是,在文字声明中你可以添加多个键 / 值对,但是在构造形式中你必须逐个添加属性。 对象是 JavaScript 的基础。在 JavaScript 中 阅读全文
posted @ 2017-03-30 15:23 夏风微凉 阅读(140) 评论(0) 推荐(0) 编辑
摘要:在上一章,我们已经知道了一共有4种绑定的方式 1.默认绑定 2.隐式绑定 3.显示绑定 4.new绑定 如果你不记得的话请看上一节 传送点 在这4种绑定中,我们知道默认绑定的级别是最低的!!!!!为什么? 因为上面的所有都不能用了才考虑默认绑定,请考虑下面的代码 所以说默认绑定的级别是最低的 隐式绑 阅读全文
posted @ 2017-03-29 20:47 夏风微凉 阅读(147) 评论(0) 推荐(0) 编辑
摘要:你可能听过很多this,就像C#中的this就是指向一个他的实例对象, 但是在javascript中,我可能要告诉你,他是在运行时动态绑定的 他指向什么,完全取决于函数在哪里调用 在这里还要说明一个东西,调用栈 >通俗的来讲,就是为了到达一个方法所调用的所有方法 我们可以用浏览器自带的调试工具来查看 阅读全文
posted @ 2017-03-29 20:09 夏风微凉 阅读(214) 评论(0) 推荐(0) 编辑
摘要:>函数作用域: 顾名思意也就是在创建函数的时候附加的一个作用域 从上面的代码我们就可以确认在创建函数foo()的时候,我们创建了一个函数作用域,因为在外面找不到这个变量!!! >嵌套的函数作用域 依旧是一个作用域中套着一个作用域 这个例子也说明了作用域是一层一层向上遍历标识符的 >函数表达式/函数声 阅读全文
posted @ 2017-03-28 10:12 夏风微凉 阅读(277) 评论(0) 推荐(0) 编辑
摘要:我们了解到作用域是在语法分析的时候就决定了的,那么我们要怎么才能"动态的改变作用域呢?" >eval() 一个简单的实例 可以看到我们在foo()函数中和全局函数中,我们都没有声明变量b,而程序却没有ReferenceError错误,就说明 我们使用eval();动态的生成了变量b,也就是改变了作用 阅读全文
posted @ 2017-03-28 10:05 夏风微凉 阅读(279) 评论(0) 推荐(0) 编辑
摘要:>作用域 因为javascript编译的过程分为了3步 1.词法分析,也叫单词拆解,比如 var t=2;那么就变成了 var , t ,= , 2; 2.语义分析 比如上面那个就变成了一个抽象树,类似lamda表达式中的数 3.代码生成 将上面生成的数据流转换成对应的机器代码,一般来说就是为上面生 阅读全文
posted @ 2017-03-28 09:34 夏风微凉 阅读(146) 评论(0) 推荐(0) 编辑
摘要:this 在一般的强类型语言中,this指向的是这个对象本身,可在javascript中 this的取值是执行上下文环境的一部分 其实这个this并不是很难立即,只要记住二点就可以了 那就是谁caller(调用者是谁this指向的就是谁),如果有赋值语句就改变类型 我们来看几个例子就知道了 在这里第 阅读全文
posted @ 2016-12-21 15:17 夏风微凉 阅读(141) 评论(0) 推荐(0) 编辑
摘要:执行上下文 顾名思意就知道他是动态的,只在代码运行的时候产生 作用域 顾名思意就知道它是一个"领域",并且这个"领域"在一开始就规划好, 不会在改, 上面的例子就很好的说明了这一点,因为在javascript中只有函数能生成作用域,在加上作用域在一开始就固定了 >这样我们就可以推测出d=undefi 阅读全文
posted @ 2016-12-21 14:22 夏风微凉 阅读(110) 评论(0) 推荐(0) 编辑
摘要:闭包 下面是百度百科的解释: 闭包是指可以包含自由(未绑定到特定对象)变量的代码块;这些变量不是在这个代码块内或者任何全局上下文中定义的,而是在定义代码块的环境中定义(局部变量)。 也就是说一个代码块中使用了自由变量 那下面来看一个简单的闭包的例子: 那为什么第一次和第二次方法的值会不同呢? 其实正 阅读全文
posted @ 2016-12-21 11:20 夏风微凉 阅读(534) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示