JavaScript笔记-方法

https://www.liaoxuefeng.com/wiki/1022910821149312基于廖雪峰老师的教程所做的笔记。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>方法的操作展示</title>
</head>
<body>

<script>

/*对象内部定义的函数叫做方法*/
var obj={
name:"Sang",
age:20,
show:function(){//show就是obj的一个方法
console.log(this.name,this.age);//用this访问这个对象的数据
}
}
obj.show();//调用show(),要想show()中的this指的对,必须这么调用

/*误区*/
var student={
name:"Sang",
school:"Hainan University",
show:function(){
var that=this;//捕获this
function showName() {//内嵌的方法无法用this访问对象的数据,需要在上层方法中捕获this
console.log(that.name);
}
showName();
console.log(this.school);
}
}
student.show();//调用show(),要想show()中的this指的对,必须这么调用

/*apply(绑定一个对象的调用)*/

/*先在外部定义方法*/
var tell=function () {
console.log(this.name+", how are you?");
}

tell.apply(student,[]);//student为绑定的对象,那么tell()里面的this指定student,[]表示参数为空

/*小技巧----用apply实现装饰器*/

//统计代码调用了多少次parseInt,可以装饰parseInt函数
var count=0;
var oldParseInt=parseInt;//保留原函数
window.parseInt=function(){//重新定义parseInt
count+=1;
return oldParseInt.apply(null,arguments);//调用原函数
}
parseInt('10');
parseInt('20');
parseInt('30');
console.log('count=',count);//结果为3
</script>
</body>
</html>