29-继承/JSON/本地存储等
码路教育 9/6/2001
# 一. 说一下,JS中都有哪些继承方案?
# 二. JSON数据都有哪些格式
# 三. LocalStorage和SessionStorage有什么区别?
# 四. 封装工具类Cache.js,可以对LocalStorage和SessionStorage操作(CRUD)
# 五. 完成如下需求
function Dog(name) {
this.name = name;
}
Dog.prototype.bark = function() {
console.log('wangwang');
}
Dog.prototype.sayName = function() {
console.log('my name is ' + this.name);
}
/*
let sanmao = new Dog('三⽑');
sanmao.sayName();
sanmao.bark();
*/
function _new() {
//=>完成你的代码
}
let sanmao = _new(Dog, '三⽑');
sanmao.bark(); //=>"wangwang"
sanmao.sayName(); //=>"my name is 三⽑"
console.log(sanmao instanceof Dog); //=>true
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 六. 输出下⾯代码运⾏的结果
function Foo() {
getName = function() {
console.log(1);
};
return this;
}
Foo.getName = function() {
console.log(2);
};
Foo.prototype.getName = function() {
console.log(3);
};
var getName = function() {
console.log(4);
};
function getName() {
console.log(5);
}
Foo.getName();
getName();
Foo().getName();
getName();
new Foo.getName();
new Foo().getName();
new new Foo().getName();
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
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
# 七. 使用原生JS模拟call的实现原理(选做)
<script>
// call的原理
(function() {
function mycall(context) {
}
Function.prototype.mycall = mycall;
}())
function fn(num1, num2) {
console.log(this);
return num1 + num2
}
let obj = {
name: "wc"
}
// fn.mycall()
let res = fn.mycall(obj, 6, 8)
console.log(res)
</script>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 八. 使用原生JS模拟apply的实现原理(选做)
<script>
// apply的使用
(function() {
function myapply(context, args) {
}
Function.prototype.myapply = myapply;
}())
function fn(num1, num2) {
console.log(this)
return num1 + num2;
}
console.log(fn.myapply())
let obj = {
name: "wc"
};
console.log(fn.myapply(obj, [1, 2]))
</script>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20