一些单词:
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 可得出