随笔分类 - 《我的JS之路》
枚举- 对象
摘要:#利用 for...in 循环遍历对象,获取对象的键名 分析代码 obj.prop > obj['prop'] 获取到的只是键名为prop的值,即undefined 这里可以清晰的看到,prop获取到的类型为字符串类型 只能用 obj[prop] 来获取属性值 #hasOwnProperty() 检
再次理解原型链之间的关系
摘要:#把__proto__理解成是原型链一条链子 __proto__把各原型链接起来 此时的person通过了实例化,变为对象,并赋值 通过实例化的对象没有 prototype person.__proto__ == Person.prototype Person.prototype.__proto__
原型与原型链 - 对象与函数关系笔记
摘要:#铺垫 __proto__和constructor属性是对象所独有的,prototype属性是函数所独有的 在JS中函数也是一种对象,函数也拥有__proto__和constructor属性 对象由函数生成。生成对象时,对象的__proto__属性指向函数的prototype属性 #演示代码 fun
包装类 - 对象笔记
摘要:#铺垫 原始值没有属性和方法 #包装类 var num = 4; num.len = 3; - 返回undefined 赋值后系统创建一个对象new Number(4).len = 3并删除; num.len 访问后,再创建一个对象new Number(4).len,即返回undefined
构造函数原理 - Js对象
摘要:#构造函数内部原理 有new之后,函数变成构造函数,产生三步隐式变化 1.函数执行,在函数体顶端隐式加上var this = {}; 2.执行赋值,AO{ this : {name:'zhangsan'...}} 3.隐式返回this,return this; 都是在new的基础上 ##小细节 在结
创建与操作 - 对象
摘要:#对象 为了避免和函数命名起冲突,构造函数使用大驼峰式命名规则 ##对象的创建方法 1.var obj = {} plainObject - 对象字面量/对象直接量 2.构造函数 系统自带构造函数 - Object() , Aarry() , Number() var obj = new Objec
立即执行函数 - Js函数笔记
摘要:#立即执行函数 定义:此类函数没有声明,在执行一次后即释放,适合做初始化。 针对初始化功能的函数,同时遵循一句话,只有表达式才能被执行符号执行 1.(function() {...}()); - W3C建议 2.(function (){})(); 可带参数,可取返回值 #立即执行函数来路 (fun
闭包 - Js函数笔记
摘要:#闭包 当函数被保存到外部时,将会生成闭包 闭包会导致原有作用域链不释放,造成内存泄漏 类似的代码就叫闭包 #闭包的运行作用域 ##代码 ##a被执行,b被定义并保存出来 ##a结束,b被执行时,a的执行期上下文指向被销毁,转化为初始的定义状态 #闭包的作用 #实现公有变量 ##函数累加器 ##做缓
作用域 - Js深入理解笔记
摘要:#执行期上下文 当函数执行时,会创建一个称为执行上下文的内部对象 一个执行期上下文定义了一个函数所执行时的环境,函数每次执行时对应的执行上下文都是独一无二的,多次调用一个函数会导致创建多个执行上下文,当函数执行完毕,它所产生的执行上下文就会被销毁 #作用域 - [[scope]] [[scope]]
预编译 - Js三部曲
摘要:#预编译前奏 imply global - 暗示全局变量, window - 全局域 任何变量未经声明即赋值,该变量为全局所有 window 一切声明的 "全局" 变量,归window所有 eg: var a = 10 ==> window.a = 10 window { a : 10 }; #预编
函数-深入JS笔记
摘要:#代码特点:高内聚,低耦合 #耦合 存在执行多个相同作用代码时,这就叫耦合 if (1 > 0) { console.log('a'); } if (2 > 0) { console.log('a'); } if (3 > 0) { console.log('a'); } #函数总结 ##函数声明
类型转化 - js中的骚操作
摘要:#Number Number() 把字符串数字转化成数字类型,布尔类型也可以转化 #parseInt parseInt() 字符串数字转化成数字类型,当布尔类型不可以(NaN),但该函数可以把数字开头的数字截取,如:100px,取出100 #parseFloat parseFloat() 转化出浮点
逻辑运算 - js笔记
摘要:#&& 与 || undefined null NaN "" 0 ⇒ false 在 && 中,当第一个值为false停止运行,返回该值,即遇假返假 在 || 中,当寻找到true的时候停止运行,返回当前值,即遇真返真
栈和堆 - JS
摘要:#原始值 - Stack (栈) Number String Boolean undefined null #引用值 - Heap (堆) array object function ...data RegExp 原始值与引用值生成的变量都会放在栈里面,唯一的区别就是二者所赋的值,原始值储存在Sta
了解Js中的client,offset
摘要:#Client clientWidth,clientHeight 元素内部的宽度和高度,clientTop,clientLeft 元素内边距到其边框的距离,clientX,clientY相当于浏览器窗口到事件的坐标系 clientWidth,clientHeight 元素的宽度高度都会把内边距计算在
JS变量作用域与解构赋值
摘要:#用var变量是有作用域的 变量在函数内部声明时,那么该变量只属于整个函数体,函数外不可调用 当两个不同的函数里,使用了用一个相同的变量名,二者不互相影响,相互独立 遇到嵌套函数时,外部函数不可调用内部函数的变量,而内部函数可调用外部函数变量 当遇到同一变量时,也是同理,“就近原则” ##变量提升
JS之关于函数
摘要:#Javascript的函数也是一个对象 function test() var test = function() 函数内部一旦执行return,则函数执行完毕,如果没有return语句,则返回 undefined 关于第二种函数的定义,第一个test()实际上是函数对象,函数名test可以视为指
JS里各种类型的循环
摘要:#for... for( 初始条件; 判断条件; 递增条件 ) #for ... in 可以把一个对象里面的所有属性依次循环出来 var person = { name: 'Jack', age: 20, city: 'Beijing' }; for (var key in person) { co
JS里的小细节,持续更新
摘要:#判断把值定为 false 集合 JavaScript里把 null、undefined、0、''、NaN 都视为false,而其他值一概为 true #Map Map是一组键值对的结构,具有极快的查找速度。 不管查询的表多大,查找速度不会变慢 var m = new Map(['Ben', 95]