构造函数与类

130 阅读1分钟

一些单词:

Construct 构造

super class 超类 也叫父类

derived class 派生类 也叫子类

OO Object-oriented 面向对象的

构造函数

如果一个函数 返回一个对象 那么该函数就是构造函数

    function Person(name, age){
        name = name || '匿名'				// 用户没有输入name,则name为匿名
        age = age || 0							// 用户没有输入age,则age为0
        const obj = {
            name: name,
            age: age
        }
        return obj
    }
    // ES6写法
    function Person(name = '匿名', age = 0){
        return { name, age }
    }
  	const f = Person('gorge', 22)			
		//f是Person函数构造出的对象 即f是Person对象

如何往对象的隐藏属性添加属性

每个Object都有自己的prototype

可以用 Object.create() 方法

Object.create() 方法用于创建一个新对象,使用现有的对象来作为新创建对象的原型(prototype)。

    function Person(name = '匿名', age = 0){
        const obj = Object.create(Person.共有属性)
        obj.name = name
        obj.age = age
        return obj
    }
    Person.共有属性 = {
        sayHi: function() {
            console.log(`你好,我是·${this.name}`);
        },
        run: function() {
            console.log(`你好,我是·${this.name},我在跑步`);
        }
    }
    const f1 = Person('gorge', 22)

上面代码,因为函数 Person 最终返回了一个对象,因此 Person 函数是一个构造函数

而 f1 是 Person 函数返回的对象,即 f1 是 Person 对象

Person函数中用 Object.create() 方法创建出一个对象 obj,并且把 Person.共有属性添加进obj的prototype里面,控制台打印出 f1 可得出