摘要: call()和apply()这两个方法的用途都是在特定的作用域中调用函数,实际上等于设置函数体内this的指向。 首先apply()方法接收两个参数:第一个参数是在其中运行函数的作用域,也就是说第一个参数指出了函数要在哪执行,第二个参数是参数数组或arrgument对象。 上面代码中apply()方 阅读全文
posted @ 2018-03-13 16:37 endlessmy 阅读(220) 评论(0) 推荐(0) 编辑
摘要: 看过《JavaScript高级程序设计3》的同学应该都记得,里面有一节专门讲JS没有块级作用域。所谓“块”,就是大括号{}中的语句。 我们在写代码时,不要在{}里面声明变量,要在代码的一开始就声明好了,以避免发生歧义。如: JS除了没有块级作用域外,函数可以创建自己的作用域。 所以,在声明变量时,全 阅读全文
posted @ 2018-03-13 14:38 endlessmy 阅读(93) 评论(0) 推荐(0) 编辑
摘要: 面试中常会问到对this对象的理解 在函数中this到底取何值,是在函数真正被调用执行的时候确定的,函数定义的时候确定不了,也就是说this总是指向函数的直接调用者,而非间接调用者。 this的取值是执行环境的一部分,每次调用函数都会产生一个新的执行环境。 情况一:构造函数 构造函数就是用来new对 阅读全文
posted @ 2018-03-13 10:59 endlessmy 阅读(123) 评论(0) 推荐(0) 编辑
摘要: 在说“执行环境”前先看一段代码 上图中,第一句报错,因为a没有定义。第二句和第三句是变量提升(JS在执行前会对声明部分做完整解析,同时局部会覆盖全局) 这说明,在一段JS代码一句一句执行前,浏览器已经做了一些准备工作。其中包括对变量的声明,而不是赋值。变量赋值是在赋值语句执行时才执行的。可看下图: 阅读全文
posted @ 2018-03-13 10:05 endlessmy 阅读(105) 评论(0) 推荐(0) 编辑
摘要: 在JS中,对象可以随时改动。 对象或者函数,刚开始new出来,可能啥属性都没有,但是可以自己加。 在jQuery源码中,对象被创建时什么属性也没有,都是代码一步步执行时,一个个加上的。 其次如果继承的方法不合适,可以做出修改 如上图,Object和Array的toString()方法不一样。肯定是A 阅读全文
posted @ 2018-03-13 09:42 endlessmy 阅读(87) 评论(0) 推荐(0) 编辑