初学,个人理解
git工作区和版本库,版本库中有暂存区和分支
js有strict 模式
js数据类型 数字,字符串,布尔,null,undifined,对象(数组是对象)
js中通过索引修改,字符串不会变。数组大小元素会改变
js对象(访问属性是通过.操作符完成的,但这要求属性名必须是一个有效的变量名(字母数字下划线)。如果属性名包含特殊字符,就必须用''括起来。
访问这个属性也无法使用.操作符,必须用['xxx']来访问) in 和hasownproperty()
js{}对象的键必须是字符串,因此引入了map,set
for...in遍历的是对象的属性名,for...of只遍历集合本身的元素
array,map,set都是iteratable类型
iteratable内置foreach a.forEach(function (element, index, array) {alert(element);
});注意浏览器的支持
// element: 指向当前元素的值,set值,map value
// index: 指向当前索引,set值,map key
// array: 指向Array对象本身,set,map 本身
js函数允许任意个参数,有个免费arguments参数(类似数组)
js引擎自动在行末添加分号机制
函数体内变量提升(就是先在函数内查找申明,再使用,但不会提升变量赋值。 函数声明优于变量声明)
js默认全局对象window,不在函数内部的变量就是全局变量,实际上被绑定到window的一个属性
任何变量现在当前函数中找声明,找不到向上层找,直至全局域中
不同js文件中全局变量可能有命名冲突,可以绑定到一个全局变量
js中变量作用域是函数内部,因此for循环无法定义块级变量,es6引入了let关键字
js函数内部定义的函数会丢失上层函数的this,内部的this会指向window,strict模式是undefined。
解决this问题,可传this或用函数的apply()方法
函数作为参数
1*y 字符串转数字
闭包(返回带状态的函数) 不可用循环变量,可封装私有变量
js的月份0-11
json的字符集必须是utf-8,json的字符串必须用“” ,其中object的键也必须用”“、
js面向对象 js没有类的概念,所有对象都是实例,继承只是把一个对象的原型指向了另一个对象
Object.create()方法可以传入一个原型对象,并创建一个基于该原型的新对象
Object.create()传入一个原型对象来创建一个对象 创建对象的方法1
法2 构造函数创建,2者都记得用函数包装一下
继承是在查询一个属性值时自动发生的 因此,继承的对象占内存少。即使原型的属性在对象被创建后添加,也能继承到
属性的继承只在读属性时,在写属性时,用不到原型对象
js中String Date Object都是大写的构造器(即函数)
浏览器对象 window navigator location screen document
var bgcolor = options && options.backgroundColor || '#fffceb';什么句式
编写一个jQuery插件的原则:
给$.fn绑定函数,实现插件的代码逻辑;
插件函数最后要return this;以支持链式调用;
插件函数要有默认值,绑定在$.fn.<pluginName>.defaults上;
用户在调用时可传入设定值以便覆盖默认值。
js没有块级作用域,函数中定义的整个函数中有效。函数中声明变量不分前后,定义分。习惯所有变量声明放在函数开头
js中有类属性(构造函数独有),本质上是全局变量,只能通过构造函数访问。。类可继承,用prototype,记得改constructor