JS学习的几点思考(一)
来源:互联网 发布:营销视频制作软件 编辑:程序博客网 时间:2024/06/07 11:41
1,js里面的类数组,实际上之前一直被误导为json,即var a ={‘name’:’eric’,’age’:18},这其实是js里面类数组,具有数组的length属性,即a.length=2,但是没有具有数组的一些方法,要对类数组进行操作的话,就要通过Array.prototype.splice[此处是数组具有的方法].call(a,参数,参数)。引用个例子
function printArgs() { Array.prototype.forEach.call(arguments, function (arg, i) { console.log(i+'. '+arg); });}> printArgs() > printArgs('a') 0. a > printArgs('a', 'b') 0. a 1. b
这里用call的第二个参数是函数,js里面函数也是对象,可以理解为处理函数。下面的例子是’正常‘的call
> var obj = {}; > Array.prototype.push.call(obj, 'a'); 1 > obj { '0': 'a', length: 1 }
参考传送门
2,函数的原型链。每一个对象都有proto,只有函数才有prototype。JS在声明一个函数的时候,会为该函数对象创建一个私有的prototype,当new这个函数的时候,js创建该函数的实例,并且把实例的proto 指向函数的prototype,并且继承该函数prototype的所有属性和方法。prototype是用来共享信息的,构造函数中的赋值都是私有的,无法共享的。形象的理解构造函数的prototype在最金字塔的最顶层,当prototype发生改变的时候,会共享数据改变。
学习传送门
3,关于构造函数的继承
4,js闭包。通俗一点理解就是,在全局中访问函数的局部变量,这只需在函数里面嵌套函数,在嵌套函数(子)里面访问父的变量,并且把这个函数返回。
闭包会引起内存泄漏,解决的方法是在函数退出之前,删除局部变量。这是阮一峰老师在博客说的,但是网上又说闭包的内存泄漏是IE的问题。下面介绍下js的垃圾回收:
mark-and-sweep,主要有两种方法,一种是标记法,GC在变量运行的时候维护一个roots表,所有的全局变量都会在这个表里面,首先被标记为激活状态,然后检查这个root以及下面的子变量是可到达,如果不可到达,就会被去掉。另外一种是计数法,当声明了一个变量,并且这个变量被其他的变量引用的时候,就会被增加一个计数,当引用变量不对这个变量引用的时候,就变-1,当为0的时候,启动GC。(互相引用的时候无法删除)
几种引起内存泄漏: 在局部函数没有用var导致成为全局变量,回调函数没有即使删除,脱离DOM的引用(标记清除不了)
传输门一 传送门二 阮一峰老师闭包教程
5,event和e的区别。主要是不兼容的产生的不同命名。此外说下困扰很久的问题,在js当中,实际参数和形参不是对应的,所以没有传入event也会默认有,和argument一样是存在的。一般来说,要var eve = e || windows.event。在此展开一下event事件的方法:
阻止冒泡,e.stopPropagation(); window.event.cancelBubble = true;举个栗子:
<div id='div' onclick='alert("div");'><ul onclick='alert("ul");'><li onclick='alert("li");'>test</li></ul></div>
阻止默认行为:e.preventDefault(),windows.returnValue=true;(要判断是否有默认行为)
传送门
明天继续๑乛◡乛๑
- JS学习的几点思考(一)
- linux驱动学习总结(一)——对linux驱动的几点思考
- 几点关于学习的思考
- 关于学习知识的几点思考
- 关于学习PHP的几点思考
- 研究生培养的几点思考·一
- 关于Android数据库orm工具库对比的几点思考(一)
- 职业规划的几点思考
- HTML5的几点思考
- QTAV的几点思考
- lowmemorykiller的几点思考
- 在线教育的几点思考
- QA的几点思考
- 机器学习产品化的几点思考
- 一键通(PoC)市场发展的几点思考
- 多项式拟合的几点思考(1)
- 关于创办软件公司的几点思考
- 对软件工程的几点思考
- Android
- Unity 在Editor中使用剪切板
- Mono.Cecil使用示例之使指定程序集成为UnityEditor.dll的友元程序集
- MySql的心得
- HDU-4109 Instrction Arrangement(差分约束系统+增加源点技巧)
- JS学习的几点思考(一)
- Linux驱动编写经验
- Linux之网络基础
- 9. 监督学习实例——运动状态预测
- 指针与数组
- servlet
- 某中学培训机构的宣传稿
- [JS] JS与Cookie
- 处理App状态改变的策略