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

# 五. 分析如下程序的执行结果(最好画图)

<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

# 六. 创建对象之普通方式(new Object 或 字面量)

  • 创建一个coder对象
  • 有color属性
  • 有coding方法

普通方式创建对象有什么缺点?

# 七. 创建对象之工厂模式创建对象

  • 创建一个coder对象
  • 有color属性
  • 有coding方法

工厂模式创建对象有什么缺点?

# 八. 创建对象之构造器(构造函数)创建对象

  • 创建一个coder对象
  • 有color属性
  • 有coding方法

构造器(构造函数)创建对象有什么缺点?

# 九. 创建对象之构造器+原型创建对象

  • 把公有属性放到原型上

# 十. 总结之前学习的JS高阶内容

Last Updated: 12/25/2022, 10:02:14 PM