28-原型对象和原型链
码路教育 9/6/2001
# 一. 说说你对原型对象和原型链的理解?
# 二. 整理JS中你见过的对象(一切都是对象)
# 三. 手写new的实现
- new是一个运算符,我们只能通过函数去模拟
- 不要直接百度,先自己思考
- 说白了就是封装一个函数 function myNew(){ }
# 四. 分析如下程序的执行结果(最好画图)
<script>
function Fn() {
this.x = 10;
this.y = 20;
}
Fn.n = 1000;
Fn.say = function() {
console.log("hello")
}
Fn.prototype.sum = function() {
return this.x + this.y;
}
let f1 = new Fn();
f1.sum();
console.log(f1.sum());
console.log(Fn.prototype == Fn.__proto__);
Fn.sum();
</script>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 五. 分析如下程序的执行结果(最好画图)
<script>
function C1(name) {
if (name) {
this.name = name;
}
}
function C2(name) {
this.name = name;
}
function C3(name) {
this.name = name || "Hello";
}
C1.prototype.name = "Tom"
C2.prototype.name = "Tom"
C3.prototype.name = "Tom"
console.log((new C1().name) + (new C2().name) + (new C3().name))
</script>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 六. 创建对象之普通方式(new Object 或 字面量)
- 创建一个coder对象
- 有color属性
- 有coding方法
普通方式创建对象有什么缺点?
# 七. 创建对象之工厂模式创建对象
- 创建一个coder对象
- 有color属性
- 有coding方法
工厂模式创建对象有什么缺点?
# 八. 创建对象之构造器(构造函数)创建对象
- 创建一个coder对象
- 有color属性
- 有coding方法
构造器(构造函数)创建对象有什么缺点?
# 九. 创建对象之构造器+原型创建对象
- 把公有属性放到原型上