
稳扎稳打JavaScript
文章平均质量分 78
凌澜星空
这个作者很懒,什么都没留下…
展开
-
稳扎稳打JavaScript(四)——闭包
闭包是JS语言的又一大核心,如果要从内存角度充分理解闭包的话,建议大家先预习下先前的几篇讲博客: 稳扎稳打JavaScript(一)——作用域链 稳扎稳打JavaScript(二)——图解对象内存模型 稳扎稳打JavaScript(三)——创建对象的几种方式什么是闭包定义 闭包是一个能够访问其他函数作用域的函数。这句话看似拗口,如果读过先前的几篇博客,那理解起来应该不难。下面来解析一下这原创 2016-12-17 16:33:48 · 2366 阅读 · 2 评论 -
稳扎稳打JS——“继承”
JS使用原型链实现“继承”JS是“基于对象”的语言,因此没有继承。但可以使用JS的特性实现“继承”——原型链。JS使用_proto_属性构造原型链,如 p._proto_ ——> Perosn.prototype Perosn.prototype._proto_ ——> Object.prototype Person._proto_ ——> Function.prototype Func原创 2016-09-15 17:01:07 · 1115 阅读 · 0 评论 -
稳扎稳打JS——执行上下文
上下文环境的初始化在代码执行前完成JS有三种作用域:全局作用域、函数作用域、eval作用域(不常用,不做介绍)。在JS代码执行前,首先会对这三种作用域进行上下文环境的准备工作,准备内容如下:全局作用域的上下文准备工作 将全局变量设为undefined将函数表达式的值设为undefined为函数声明直接赋值将window对象赋给this函数作用域的上下文准备工作 确定自由变量的作用域原创 2016-09-17 11:10:41 · 1205 阅读 · 1 评论 -
稳扎稳打JS——自由变量
自由变量的作用域在程序运行前就已经确定!自由变量相当于Java中的全局变量,它在外层作用域中声明,但在内层作用域中使用,如下所示:var a = 1;function fn(){ console.log(a);//a为自由变量}当自由变量所属的函数被定义时,自由变量的值就已经确定,是该函数定义处的父作用域中同名变量的值。在上述示例中,函数内部的a是自由变量,它的值是fn的父作用域原创 2016-09-17 11:50:10 · 2402 阅读 · 0 评论 -
稳扎稳打JS——this
this的值是在运行时确定的JS中的this究竟代表什么,这是在程序运行时根据上下文环境确定,可以分为以下几种情况。1. 全局作用域中的this在全局作用域中,this指向window对象。console.log(this);//指向window对象this.x = 5//在全局作用域内创建一个x//与this.x = 5的等价情况://var x = 5;//x = 5;在全局作用域中执行原创 2016-09-17 14:18:30 · 1611 阅读 · 1 评论 -
JavaScript奇淫技巧(一)
if-else简化写法代码中若出现多层if-else嵌套,代码就会显得臃肿不堪,这时可采用替代方案来浓缩代码。原创 2016-10-29 20:21:17 · 4923 阅读 · 3 评论 -
稳扎稳打JavaScript(一)——作用域链内存模型
几个概念在开始之前,先了解几个概念。1.1. 作用域作用域是指当前正在执行的代码能够访问到变量的范围;每个函数都有各自的作用域,存储函数所有的局部变量;1.2. 变量对象变量对象用于存储函数各自的局部变量;每个函数都有各自的变量对象,并且在函数执行时被创建;上文提到:“每个函数都有各自的作用域,用于存储函数的局部变量”,其实这句话并不严谨。作用域中存储的其实是变量对象的引用,而变量对象才原创 2016-12-10 13:43:03 · 5629 阅读 · 5 评论 -
稳扎稳打JavaScript(二)——图解对象内存模型
1. 什么是JS对象?在JS中,对象是一组无序属性的集合。其中,属性可以是基本数据类型、引用类型、函数。如下面这个对象的例子:var chai={ name : "柴毛毛", // 属性为基本数据类型 perosn : { // 属性为引用类型 address : "xxx", sex : "man" }, getName : func原创 2016-12-13 23:14:48 · 6684 阅读 · 2 评论 -
稳扎稳打JavaScript(三)——创建对象的几种方式
有了前面两篇文章的基础后,我们来谈一谈在JS中创建对象的几种方式。 建议大家先预习下先前的两篇博客: 稳扎稳打JavaScript(一)——作用域链 稳扎稳打JavaScript(二)——图解对象内存模型在JS中,创建对象的方式有很多,而且各有千秋,我们需要根据实际的业务需求选择不同的方式。1. 工厂模式这是创建对象最为简单的方式。1.1. 定义方式工厂模式的思想是:将对象构建的过程封装在一个原创 2016-12-17 09:57:46 · 2791 阅读 · 1 评论 -
稳扎稳打JS——“对象”
一切皆“对象”JS中一切皆“对象”“对象”是属性的集合,而属性又是对象。既然属性又是对象,那么一个对象的属性也可以拥有属性,如://定义一个函数getNamevar getName = function(){ return "chaiMaoMao";}//由于一切皆对象,故getName也为对象,故可以给它添加属性,属性可以是任何类型getName.value = "lalala原创 2016-09-11 09:39:33 · 1823 阅读 · 2 评论