在Javascript中只有五种简单类型,分别为null,undefined,boolean,String和Number。一种复杂类型:object。代码类型只有一种形式就是function。javascript
可使用typeof函数java
例如 var name = 'mdemo';console.log(typeof name);// 'string'还能够用instanceof
Push()尾部添加 pop()尾部删除
Unshift()头部添加 shift()头部删除数组
javascript和其余语言不一样,不存在花括号之间的块级做用域,而是用函数来进行做用域的划分。浏览器
concat--将两个数组链接起来splice--能够用来删除、添加、替换安全
Var ev = ev || window.event
document.documentElement.clientWidth || document.body.clientWidth
Var target = ev.srcElement||ev.target 闭包
找到要删除的元素的索引,而后使用splice(index,1)删除app
不是数组,typeof 能够看到是 object类型,并且arguments还有callee方法,因此不会是数组的。函数
在个人前面的文章中有详细的介绍。闭包性能
让利用事件冒泡的原理,让本身的所触发的事件,让他的父元素代替执行!学习
canceBubble return false
前者会自动转换类型
后者不会
在函数代码中,使用特殊对象 arguments,开发者无需明确指出参数名,经过使用下标就能够访问相应的参数。
arguments虽然有一些数组的性质,但其并不是真正的数组,只是一个类数组对象。其并无数组的不少方法,不能像真正的数组那样调用.jion(),.concat(),.pop()等方法。
在代码中出现表达式-"use strict"; 意味着代码按照严格模式解析,这种模式使得Javascript在更严格的条件下运行。
好处:
- 消除Javascript语法的一些不合理、不严谨之处,减小一些怪异行为;
- 消除代码运行的一些不安全之处,保证代码运行的安全;
- 提升编译器效率,增长运行速度;
- 为将来新版本的Javascript作好铺垫。
坏处:
一样的代码,在"严格模式"中,可能会有不同的运行结果;一些在"正常模式"下能够运行的语句,在"严格模式"下将不能运行。
this老是指向函数的直接调用者(而非间接调用者);
若是有new关键字,this指向new出来的那个对象;
在事件中,this指向触发这个事件的对象,特殊的是,IE中的attachEvent中的this老是指向全局对象Window;
它的功能是把对应的字符串解析成JS代码并运行;
应该避免使用eval,不安全,很是耗性能(2次,一次解析成js语句,一次执行)。
由JSON字符串转换为JSON对象的时候能够用eval,var obj =eval(‘(‘+ str +’)’);
(1)建立一个空对象,而且 this 变量引用该对象,同时还继承了该函数的原型。
(2)属性和方法被加入到 this 引用的对象中。
(3)新建立的对象由 this 所引用,而且最后隐式的返回 this 。
apply()函数有两个参数:第一个参数是上下文,第二个参数是参数组成的数组。若是上下文是null,则使用全局对象代替。
如:function.apply(this,[1,2,3]);
call()的第一个参数是上下文,后续是实例传入的参数序列。
如:function.call(this,1,2,3);
JavaScrip能够采用构造器(constructor)生成一个新的对象,每一个构造器都拥有一个prototype属性,而每一个经过此构造器生成的对象都有一个指向该构造器原型(prototype)的内部私有的连接(proto),而这个prototype由于是个对象,它也拥有本身的原型,这么一级一级直到原型为null,这就构成了原型链.
prototype是function对象中专有的属性。
__proto__是普通对象的隐式属性,在new的时候,会指向prototype所指的对象;
__proto__其实是某个实体对象的属性,而prototype则是属于构造函数的属性。
__proto__只能在学习或调试的环境下使用。这里抓住两点:
- 构造函数经过 prototype 属性访问原型对象
- 实例对象经过 [[prototype]] 内部属性访问原型对象,浏览器实现了 __proto__属性用于实例对象访问原型对象
Object 为构造函数时,是Function的实例对象;Function为构造函数时,Function.prototype 是对象,那么他就是Object的实例对象。