js知识点
lucky芬
聚沙成塔,水滴石穿,努力到了自然会有期待的结果,做一个持之以恒的程序媛~(美丽与智慧并存,我的理想,嘻嘻)
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
3.JavaScript深入之执行上下文栈
顺序执行? 如果要问到 JavaScript 代码执行顺序的话,想必写过 JavaScript 的开发者都会有个直观的印象,那就是顺序执行,毕竟: var foo = function () { console.log('foo1'); } foo(); // foo1 var foo = function () { console.log('foo2');转载 2017-06-07 09:59:18 · 421 阅读 · 0 评论 -
4.JavaScript深入之变量对象
前言 在上篇《JavaScript深入之执行上下文栈》中讲到,当 JavaScript 代码执行一段可执行代码(executable code)时,会创建对应的执行上下文(execution context)。 对于每个执行上下文,都有三个重要属性: 变量对象(Variable object,VO)作用域链(Scope chain)this 今天重点讲讲创建变量对象的过转载 2017-06-07 10:09:06 · 505 阅读 · 0 评论 -
5.JavaScript深入之作用域链
前言 在《JavaScript深入之执行上下文栈》中讲到,当JavaScript代码执行一段可执行代码(executable code)时,会创建对应的执行上下文(execution context)。 对于每个执行上下文,都有三个重要属性: 变量对象(Variable object,VO)作用域链(Scope chain)this 今天重点讲讲作用域链。 作用域转载 2017-06-07 10:15:15 · 391 阅读 · 0 评论 -
6.JavaScript深入之从ECMAScript规范解读this
前言 在《JavaScript深入之执行上下文栈》中讲到,当JavaScript代码执行一段可执行代码(executable code)时,会创建对应的执行上下文(execution context)。 对于每个执行上下文,都有三个重要属性 变量对象(Variable object,VO)作用域链(Scope chain)this 今天重点讲讲 this,然而不好讲。转载 2017-06-07 10:17:37 · 632 阅读 · 0 评论 -
7.JavaScript深入之执行上下文
思考题 在《JavaScript深入之词法作用域和动态作用域》中,提出这样一道思考题: var scope = "global scope"; function checkscope(){ var scope = "local scope"; function f(){ return scope; } return f(); } chec转载 2017-06-07 10:20:14 · 606 阅读 · 0 评论 -
8.JavaScript深入之闭包
定义 MDN 对闭包的定义为: 闭包是指那些能够访问自由变量的函数。 那什么是自由变量呢? 自由变量是指在函数中使用的,但既不是函数参数也不是函数的局部变量的变量。 由此,我们可以看出闭包共有两部分组成: 闭包 = 函数 + 函数能够访问的自由变量 举个例子: var a = 1; function foo() { consol转载 2017-06-07 10:22:13 · 384 阅读 · 0 评论 -
9.JavaScript深入之参数按值传递
定义 在《JavaScript高级程序设计》第三版 4.1.3,讲到传递参数: ECMAScript中所有函数的参数都是按值传递的。 什么是按值传递呢? 也就是说,把函数外部的值复制给函数内部的参数,就和把值从一个变量复制到另一个变量一样。 按值传递 举个简单的例子: var value = 1; function foo(v) { v =转载 2017-06-07 10:23:29 · 638 阅读 · 0 评论 -
10.JavaScript深入之call和apply的模拟实现
call 一句话介绍 call: call() 方法在使用一个指定的 this 值和若干个指定的参数值的前提下调用某个函数或方法。 举个例子: var foo = { value: 1 }; function bar() { console.log(this.value); } bar.call(foo); // 1 注意两点: ca转载 2017-06-07 10:24:59 · 1317 阅读 · 0 评论 -
11.JavaScript深入之bind的模拟实现
bind 一句话介绍 bind: bind() 方法会创建一个新函数。当这个新函数被调用时,bind() 的第一个参数将作为它运行时的 this,之后的一序列参数将会在传递的实参前传入作为它的参数。(来自于 MDN ) 由此我们可以首先得出 bind 函数的两个特点: 返回一个函数可以传入参数 返回函数的模拟实现 从第一个特点开始,我们举个例子: va转载 2017-06-07 10:27:58 · 6322 阅读 · 6 评论 -
12.JavaScript深入之new的模拟实现
new 一句话介绍 new: new 运算符创建一个用户定义的对象类型的实例或具有构造函数的内置对象类型之一 也许有点难懂,我们在模拟 new 之前,先看看 new 实现了哪些功能。 举个例子: // Otaku 御宅族,简称宅 function Otaku (name, age) { this.name = name; this.age = ag转载 2017-06-07 10:29:42 · 938 阅读 · 0 评论 -
13.JavaScript深入之类数组对象与arguments
类数组对象 所谓的类数组对象: 拥有一个 length 属性和若干索引属性的对象 举个例子: var array = ['name', 'age', 'sex']; var arrayLike = { 0: 'name', 1: 'age', 2: 'sex', length: 3 } 即便如此,为什么叫做类数组对象呢?转载 2017-06-07 10:31:14 · 501 阅读 · 0 评论 -
14.JavaScript深入之创建对象的多种方式以及优缺点
写在前面 这篇文章讲解创建对象的各种方式,以及优缺点。 但是注意: 这篇文章更像是笔记,因为《JavaScript高级程序设计》写得真是太好了! 1. 工厂模式 function createPerson(name) { var o = new Object(); o.name = name; o.getName = function () {转载 2017-06-07 10:34:14 · 440 阅读 · 0 评论 -
1.JavaScript深入之从原型到原型链
构造函数创建对象 我们先使用构造函数创建一个对象: function Person() { } var person = new Person(); person.name = 'Kevin'; console.log(person.name) // Kevin 在这个例子中,Person 就是一个构造函数,我们使用 new 创建了一个实例对象 person。 很简单转载 2017-06-07 10:57:22 · 376 阅读 · 0 评论 -
2. JavaScript深入之词法作用域和动态作用域
作用域 作用域是指程序源代码中定义变量的区域。 作用域规定了如何查找变量,也就是确定当前执行代码对变量的访问权限。 JavaScript 采用词法作用域(lexical scoping),也就是静态作用域。 静态作用域与动态作用域 因为 JavaScript 采用的是词法作用域,函数的作用域在函数定义的时候就决定了。 而与词法作用域相对的是动态作用域,函数的作用转载 2017-06-07 09:56:59 · 445 阅读 · 0 评论 -
js易错题记录
1.下面的代码会在 console 输出神马?为什么? var myObject = { foo: "bar", func: function() { var self = this; console.log("outer func: this.foo = " + this.foo); console.log("outer func: self.foo = " + self.foo)...原创 2018-08-07 21:17:49 · 753 阅读 · 0 评论
分享