前端初学

Tags
javascriptwebapi
Created
Mar 2, 2015 11:45 PM

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变量

SuperMade with Super