前端初学


JavaScript,一种直译式脚本语言(不需要先编译),解释器(直译器)使用即时编译(Just-in-time compilation)技术。

在 JavaScript 中,命名空间只是另一个包含方法,属性,对象的对象。
在JavaScript中,类实际上就是一个函数,那么对于类进行转换的所谓"扩展",我们也称其为一个高阶函数,其范式为:F(class1) => class2
JavaScript 是一种基于原型的语言,它虽然有类声明和类表达式两种定义方法,但这只是一个函数,结果还是生成原型。

Js 的执行是单进程单线程执行,node-webworker-threads 中写在线程中运行的函数的上下文是另外一个。
基本类型的变量是存放在栈区的(栈区指内存里的栈内存);引用类型的存储需要内存的栈区和堆区(堆区是指内存里的堆内存)共同完成,栈区内存保存变量标识符和指向堆内存的地址。
函数,数组等都是特殊的对象,他们可以随时当成普通对象使用
函数作用域不是代码块,也不是 try…catch 块。es6有块级作用域
try...catch 是处理可以忽略的错误,因为程序会继续执行
return 后面的语句忽略执行
for 中第一个参数定义的变量相当于在 for 语句块之中、循环体语句之前定义,for的括号中是3个表达式而非语句
对象.方法(); // 方法中的 this 指向对象
var now = new Date();//创建新的日期对象
三元允许符(?:),布尔?真时执行:假时执行
对象.属性="";
\ 转义字符,如document.write ("\"带引号字符串\"");
允许将语句分隔成多行,但是不能在一个字符串的中间分 成多行。
对象:window(browse ),document(browse),Date,Math,Number,String,Boolean,location,event,image
for(var;if;++var)
break 跳出 while,for,switch,label。continue 是跳过后面的语句执行下一个循环。嵌套也全部跳出。
switch语句中只要有一个case匹配到了,那么后面的 case 不管有没有匹配,里面的语句都会执行
name:{} 带标记复合语句,continue/break name跳出。必须跟对象属性名区别。
逻辑运算符与(&&)或(||)非(!)。
习惯:变量用小写,后面紧接着的单词第一个字母大写;对象第一个字母大写;常量(js不能定义常量)变量全部大写,单词间用下划线连接
局部变量与全局变量同名,全局变量在函数中将不起作用
声明数组:var = new array();
for...in:遍历对象中的每个元素,跳过未定义元素
被调用函数的数组参数是用引用方式,而不是值传递,引用方式可以修改源数据
数组排序内置方法sort
表单第一个元素被选择(属性)frome.elements[1].checked。
提交表单执行js:frome的action属性为javascropt:function()
将软件包装成类,以便复用。
escape方法将非字母数字字符转为%ASCII代码,使字符串中的特殊字符不会被误解
HTML中的元素即DOM(document object mod)节点,所以节点构成DOM树
DOM 文本子节点#text
DOM节点的onclick属性值不是可执行语句,而是发生事件时调用的函数名
DOM节点要在载入之后才能访问,如head中的脚本不能访问DOM节点
关键字this在事件处理函数中指发生事件的DOM对象
document.onmouseout,再用this会获取整个文档,可用window.event.target获取事件调用者
DOM事件注册只注册到已有元素上,后面创建的元素没有注册事件
DOMJieDian.onclick = functionName或者function(){return},匿名函数仅仅用于向事件处理器赋值
事件冒泡使得在子元素中激活的事件也"冒泡"到父元素进行处理用,event.cancelBubble=ture 取消(IE),默认为flase。标准浏览器:e.stopPropagation()
JSON:{} 对象;[] 数组
JSON.parse 将字符串转为JSON对象
用函数构造对象{x,y}再赋值以实例化,如function Point(x,y){this.x=x;this.y=y} var p = new Point(1,1),这个对象的类为Point,还可以通过对构造函数的prototype对象创建方法r,并使得构造函数实例化的对象p继承方法p.r()
事件注册:image.addEventListener("click",hide,false);
注册事件的处理函数:function hide(event){event.target.style.visibility = "hidden"}
graph.width = graph.width 清除并重置画布
局部变量当做跟函数调用相关的某个对象的属性
in匹配数组的属性是匹配索引字符串
data[i++]*=2;data[i++]=data[i++]*2; 不等价,后者自增了2次
新窗口打开一个客户端URL时在document中写入URL指定的文档的内容,如果以javascript:URL打开,则会将返回值写入document中。
function声明不能在语句中(能解释也不具备移植性)
var声明提前,但是初始化代码还在原来的位置
每个函数都有call、apply方法,call第二个以后的参数就是调用函数的参数,而apply的调用函数参数应该用数组于第二个参数表示。
计算机科学中,柯里化Currying),又譯為卡瑞化加里化,是把接受多个参数函数变换成接受一个单一参数(最初函数的第一个参数)的函数
Object.prototype.toString.call(a) // 原生对象类型判断,返回的是对象的[[Class]](语言内部属性)
var Set = function invocation(){};//是函数表达式,并没有创建invocation变量