JavaScript小笔记
来源:互联网 发布:sql语句增删改查实例 编辑:程序博客网 时间:2024/06/05 06:35
1.for-in语句
for (变量 in 对象)
{
在此执行代码
}
建议在使用该语句前检查确认该对象的值不是null或undefined.(ES5之前的会抛出错误,ES5则不执行该语句)
2.label:statement与for循环联用
outermost:for() { for(){ if () break outermost;//continue outermost; }}//连续跳出两重循环,建议使用时不要嵌套过多循环,尽量使用描述性的标签(label)
3.理解函数参数
可以通过arguments对象来访问参数数组
arguments的值会自动反映到对应的命名参数,反过来不成立。
参数传递的都是值,没有引用,只不过这个值可能是某个地址
严格模式下修改arguments的值会导致语法错误!
没有函数重载,后定义的将覆盖前定义的。因为函数名相当一个指针,后面指向的会覆盖前面。
函数声明会率先读取,函数表达式要执行到该处代码才会执行。
4.javaScript没有块级作用域
要在有局部作用域的变量范围内找到同名的全局作用域变量使用window.变量名
5.函数内部属性
arguments.callee()相当于调用原函数
this引用的是函数据以执行的环境对象
函数名.caller保存调用当前函数的函数的引用
6.函数属性和方法
length属性返回参数的名称
apply()和call()方法
7.迷宫实现总结
相邻的border边界是不会合并的
var temp = document.getElementsByClassName(“block”);
有元素的class属性改变了,temp也会改变,不保证指向原来的那个元素
8.apply()的参数为空时,默认调用全局对象。
var x = 0; function test(){ alert(this.x); } var o={}; o.x = 1; o.m = test; o.m.apply(); //0
9.对象
以工厂模式创建对象无法知道对象的类型,以构造函数的模式则可以
alert(person1 instanceof Object)alert(person1 instanceof Person)
构造函数如果重复调用来创建对象则其中的函数会反复定义,因此可以将其写在函数外面,但这样就多了很多全局函数,没有封装性可言!所以要使用原型。
Person.prototype.name="ha"Person.prototype = { construct:Person}//construct属性改变了,不重新定义的话指向object构造函数。
alert(Person.prototype.isPrototypeOf(person1));//truealert(Object.getPrototypeOf(Person1)==Person.prototype);//truealert(person1.hasOwnProperty("name"));//当属性存在实例中返回true;
Object.keys(p1);//只取得实例属性Object.getOwnPropertyNames(Person.prototype);//取得所有实例属性,包括不可枚举的
原型具有动态性,修改原型会作用到已经创建的实例,因为是指针指向。但是重写原型则不会,切断了现有原型与任何之前已经存在对象实例之间的联系。
10创建对象模式
动态原型模式:将原型放于构造函数当中,用if判断是否创建了原型
寄生构造函数模式:与工厂模式类似,只是用了new操作符。通过创建原生对象然后再增加方法的方式来创建对象。
稳妥构造函数模式(最适合在安全的环境中,禁止使用this和new):与寄生构造函数类似,不引用this也不适用new.
11原型链
问题:原先的实例属性变成了现在的原型属性,会被所有的实例共享!同时难以向超类型的构造函数中传递参数。
12.使用递归函数时用arguments.callee更保险
13闭包
执行环境中定义的所有变量和函数都保存在这个一个变量对象上。如果执行环境是环境,则将其活动对象作为变量对象。
匿名函数的执行环境具有全局性
- JavaScript小笔记
- JavaScript 小笔记(一)
- JavaScript小笔记(二)
- JavaScript小笔记(三)
- javascript 算法笔记-小例
- 正则表达式javascript小demo以及笔记
- JavaScript小效果的实现(笔记)
- 小白学习JavaScript笔记(一)
- 小白学习javaScript笔记(二)
- 小白学习javaScript笔记(三)
- JavaScript学习笔记:用JavaScript部分小功能的实现
- [笔记] 用javascript为浏览器写写小插件
- JavaScript DOM编程 学习笔记-两个小示例
- Web:左耳入右耳出(JavaScript>小笔记)
- 2017.07.27am-初学Javascript的小笔记
- js笔记(一)-《javascript高级程序设计》- 数组小知识
- c++与JavaScript的语法差异点,小笔记
- 【JavaScript】JavaScript小技巧
- 微信公众号开发--自定义菜单跳转页面并获取用户信息(续)
- MongoDB安装、启动与关闭
- js正则表达式语法
- HLS-iOS视频播放服务架构深入探究(一)
- JSP 标准标签库(JSTL)
- JavaScript小笔记
- iOS使用UITabbarController跳转(push)界面,如何自动隐藏底部tabbar?
- 21分钟 MySQL 入门教程
- 数据交换
- 解决IllegalStateException: Can not perform this action after onSaveInstanceState
- KMF算法(串的模式匹配算法)
- influxdb 关于field name中包含dot(英文句号)的bug
- js判断 ios微信访问
- web.xml配置中classpath:与classpath*:的区别