2018-07-21 学习总结

1.target属性

标签的 target 属性规定在何处打开链接文档。
target的四个属性值:
_blank 在新窗口中打开被链接文档。(新窗口)
_self 默认。在相同的框架中打开被链接文档。
_parent 在父框架集中打开被链接文档。
_top 在整个窗口中打开被链接文档。(跳出框架)
framename在指定的框架中打开被链接文档。

//由a标签利用target属性链接的页面
 
  • Preface
  • /*view_frame是当用户从左边框架中的目录中选择一个链接时,浏览器 会将这个关联的文档载入并显示在右边这个 "view_frame" 框架中*/
  • oooooo
  • /*当用户第一次选择内容列表中的某个链接时,浏览器将打开一个新的 窗口,将它标记为 "view_window",然后在其中希望显示的文档内容。*/
2.标签基本定义

标签定义超链接,用于从一张页面链接到另一张页面。
元素最重要的属性是 href 属性,它指示链接的目标。
标签的四种状态:
link: 未被访问的链接 (带有蓝色下划线)
visited: 已被访问的链接 (带有紫色下划线)
active: 活动链接 (带有红色下划线)
hover: 鼠标悬停的链接

3.标签链接到同以文档的不同位置
查看第五节 //点击链接就会转到第五节
第三节
第四节
第五节
第六节
4.标签链接到图片
//点击图片,转到链接页面
 
     
 
5.text-decoration 下划线设置

text-decoration:none 无装饰,通常对html下划线标签去掉下划线样式
text-decoration:underline下划线样式
text-decoration:line-through 删除线样式-贯穿线样式
text-decoration:overline上划线样式

6.text-transform 大小写设置

none 默认。定义带有小写字母和大写字母的标准的文本。
capitalize 文本中的每个单词以大写字母开头。
uppercase 定义仅有大写字母。
lowercase 定义无大写字母,仅有小写字母。
inherit 规定应该从父元素继承 text-transform 属性的值。

7.css的四种单位

% 百分比
cm 厘米
px 像素 (计算机屏幕上的一个点)
em 字体尺寸
1em 等于当前的字体尺寸。 2em 等于当前字体尺寸的两倍。
eg:如果某元素以 12pt 显示,那么 2em 是24pt。
在 CSS 中,em 是非常有用的单位,因为它可以自动适应用户所使用的字体。

8.js函数

函数定义方法:

(1).
function abs(x) {
..............
}
abs()函数的定义如下:
function指出这是一个函数定义;
abs是函数的名称;
(x)括号内列出函数的参数,多个参数以,分隔;
{ ... }之间的代码是函数体,可以包含若干语句,甚至可以没有任何语句。

(2).
var abs = function (x){
````````
}; //分号表示结束
在这种方式下,function (x) { ... }是一个匿名函数,它没有函数名。但是,这个匿名函数赋值给了变量abs,所以,通过变量abs就可以调用该函数。
上述两种定义完全等价,注意第二种方式按照完整语法需要在函数体末尾加一个;,表示赋值语句结束。

关键字arguments:
它只在函数内部起作用,并且永远指向当前函数的调用者传入的所有参数。arguments类似Array但它不是一个Array.
arguments最常用于判断传入参数的个数(arguments.length)。

rest参数:获得多余的参数

9.函数变量及作用域

(1) 若在不同函数体内定义相同的变量不会出错,因为变量的作用于在函数内部。反之,若是在函数外定义变量,则会出错。

(2) 函数可以嵌套,则内部函数可以访问外部函数定义的变量,反过来则不行

(3) 自身函数定义开始,从“内”向“外”查找变量。如果内部函数定义了与外部函数重名的变量,则内部函数的变量将“屏蔽”外部函数的变量。

(4)全局变量:不在任何函数内定义的变量就具有全局作用域。
js默认有一个全局对象window,全局作用域的变量实际上被绑定到window的一个属性:
var x = 0 ;
alert(x); // 0
alert(window.x); // 0
所以直接访问全局变量x和访问window.x是完全一样的。

(5)块级作用域变量
let可以申请块级的变量,例如for循环中的变量。

(6)常量
constlet一样是块级作用域,但是const申请是常量,值不可变。

10.解构赋值

(1).对数组元素同时赋不同的值:
var arr = ['yu','dang','ling'];//创建数组
var[x,y,z] = ['yu','dang','ling']; //同时赋值
var[x,[y,z] ] = ['yu',['dang','ling'] ];//注意嵌套层次和位置要保持一致
var[ , ,z] = [ , ,'ling'] ];//也可省略前两个,直接对第三个进行赋值
(2).对对象属性进行赋值

var person = {
    name: '小明',
    age: 20,
    address: {
        city: 'Beijing',
        zipcode: '100001'
    }
>};
var {name, address: {city, zip}} = person;//对象的属性值赋给变量
name; // '小明'
city; // 'Beijing'
zip; // undefined, 因为属性名是zipcode而不是zip
// 注意: address不是变量,而是为了让city和zip获得嵌套的address对象的属性:
address; // Uncaught ReferenceError: address is not defined

(3).利用解构赋值交换两个数的值
var x = 0;
var y = 1;
[x,y] = [y,x];

(4).如果一个函数接收一个对象作为参数,那么,可以使用解构直接把对象的属性绑定到变量中。例如,下面的函数可以快速创建一个Date对象:
function Date({year, month, day, hour=0, minute=0, second=0}) {
}
传入的对象只需要year、month和day这三个属性:
buildDate({ year: 2017, month: 1, day: 1 });
// Sun Jan 01 2017 00:00:00 GMT+0800 (CST)

11.方法

给对象绑定函数,称作方法。

var person = {
    name: '小明',
    birth: 1990,
    age: function () {
        var y = new Date().getFullYear();
        return y - this.birth;
    } //给age属性绑定函数
};
person.age; // function person.age()
person.age(); // 今年调用是25,明年调用就变成26了

this关键字:
this是一个特殊变量,它始终指向当前对象 ,this.birth指的是person.birth。
如果单独调用一个函数,并不在对象内部,则this指向的对象是window。

12.apply()方法

apply()方法有两个参数,第一个为this绑定的变量,第二个是Array,表示函数本身的参数。

function getAge() {
    var y = new Date().getFullYear();
    return y - this.birth;
}
var xiaoming = {
    name: '小明',
    birth: 1990,
    age: getAge
};
xiaoming.age(); // 28
getAge(); // NaN
因为此时函数在对象外部,this指向的window,而不是xiaoming,所以得不到,返回NaN。
。。。。。。。
getAge.apply(xiaoming, [ ]); // 28, this指向xiaoming, 参数为空
apply()方法则将this绑定到参数xiaoming上,就可以找到小明的年龄了。
13.call()方法

call()方法与apply()方法很像,但也有区别。
apply()方法是将参数打包成数组在传入。
call()方法则是按照参数顺序传入。
eg:找出最大数
Math.max.apply(null, [3, 5, 4]); // 5
Math.max.call(null, 3, 5, 4); // 5
对普通函数调用,我们通常把this绑定为null。

14.高阶函数

既然变量可以指向函数,函数的参数能接收变量,那么一个函数就可以接收另一个函数作为参数,这种函数就称之为高阶函数。

function add(x, y, f) {
    return f(x) + f(y);
}
x = -5;
y = 6;
f = Math.abs;
f(x) + f(y) ==> Math.abs(-5) + Math.abs(6) ==> 11;
return 11;
15.map/reduce

1.map()
map可以将数组内 的各元素,同时赋值或进行别的操作,不用一一进行。
eg:
var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
arr.map(String); // ==> ['1', '2', '3', '4', '5', '6', '7', '8', '9']

2.reduce()
reduce()把一个函数作用在这个数组元素上,这个函数必须接收两个参数,reduce()把结果继续和序列的下一个元素做累积计算(对数组求和,求积)
eg:

求和:
var arr[] = [1,3,4,6,7];
arr.reduce(function(x,y) ={
     return(x+y);
}); //21

把[1, 3, 5, 7, 9]变换成整数13579:
var arr[] = [1,3,4,6,7];
arr.reduce(function(x,y) = {
     return (x*10 +y);
}); //13467
16.filter()

用于把Array的某些元素过滤掉,然后返回剩下的元素。
filter()把传入的函数依次作用于每个元素,然后根据返回值是true还是false决定保留还是丢弃该元素。
eg:

删除数组中的偶数
var arr = [1,2,3,4,5,6];
arr.filter(function(x) = {
       return x%2 !=0;
});
arr; //1,3,5
17.sort()

排序函数
两个元素x和y,
if(x < y) return -1;
if(x == y) return 0
if(x > y) return 1
这样,排序算法就不用关心具体的比较过程,而是根据比较结果直接排序。
eg:

从小到大排序:
var arr= [34,23,12,56];
arr.sort(function (x, y) {
    if (x < y) {
        return -1;
    }
    if (x > y) {
        return 1;
    }
    return 0;
});
console.log(arr); // [12,23,34,56]

从大到小排序
var arr = [23,47,34,21];
arr.sort(function(x,y){
    if(x>y)  return -1;
    if(x

你可能感兴趣的:(2018-07-21 学习总结)