复习Javascript

138 阅读2分钟

Javascript的组成

一个完整的Javascript实现通常由三部分组成:

1.ECMAScript(ES):核心

2.BOM(Brower Object Model):浏览对象模型

3.DOM(Document Object Model):文档对象模型

ES规定了Javascript实现的各方面内容的语言描述,如语法、类型、语句、关键字、保留字、操作符、对象。

DOM是用于HTML的API,将整个页面映射成一个多层节点结构,HTML页面中的每个组成部分都是某种类型的节点,同时节点包含不同类型的数据。

BOM用于控制浏览器页面以外的部分,只处理浏览器窗口和框架。如弹出新浏览器窗口,移动、缩放、关闭浏览器窗口等等。

< script >元素

async:立即下载脚本,但不妨碍页面中的其他操作。

defer: 表示脚本延迟到文档完全被解析和显示之后再执行。

语法

变量

var:定义作用域中的局部变量。

数据类型

数据类型:Undefined、Null、Boolen、Number、String、Object。

  1. 可以使用typeof操作符检测变量的数据类型(除了Null)。 从逻辑角度来看,Null值表示一个空对象指针,占用一个字节空间,所以用typeof检测null对象返回"object"类型。
  2. ES中字符串是不可变的,一旦创建,变量值不能修改。
  3. NaN与任何值都不等,包括本身。
  4. 数字进制转换parseInt(string,ary)。
  5. Object被复制时实际上是被赋值指针,新旧变量同时指向一个对象,修改其中一个,另一个变量也响应修改。

迭代方法

every()如果函数对每一项都返回true,则返回true。

filter()返回函数会返回true的项组成的数组。

forEach()无返回值。

map()返回每次函数调用的结果组成的数组。

var arr[1,2,3,4,5];
var filterResult = arr.filter(function(item,index,array){
    return (item>2);    #[3,4,5]
});

归并方法

reduce() 从左到右迭代数组的所有项,然后构建一个最终返回值。 reduceRight() 从数组最后一项开始,向前遍历到第一项,构建最终返回值。

var values = [1,2,3,4,5];
var sum = values.reduce(function(prev,cur,index,array){
    return prev + cur;    
});
var anothersum = values.reduceRight(function(prev,cur,index,array){
    return prev + cur;
});

Function类型

  1. 没有重载
  2. 递归时使用arguments.callee
function factorial(num){
    return num<=1? 1:arguments.callee(num-1);_
}
  1. 函数属性:apply、call、bind

apply、call作用相同,区别在于接收参数不同,使用call方法需要逐个列举出参数

bind方法会创建一个函数实例,其this值会被绑定到传给到传给bind()函数的值

function sum(num1,num2){
    return num1+num2;
}
function callSum1(num1,num2){
    return sum.apply(this,arguments);
}
function callSum2(num1,num2){
    return sum.apply(this.[num1,num2]);
}
function callSum(num1,num2){
    return sum,call(this,num1,num2);
}
alert(callSum(10,10));//20
alert(callSum1(10,10));//20
alert(callSum2(10,10));//20
window.color = "red";
var o = {color:"blue"}
function sayColor(){
    alert(this,color);
}
sayColor.call(this);   //red
sayColor.call(window); //red
sayColor.call(o);      //blue

var objectSayColor = sayColor.bind(o);
objectSayColor();      //blue