<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>构造函数继承</title></head><body></body></html><script> /** * 优点: * 创建的子类,可以向父类传参 * 缺点: * 每个实例都拷贝一份,占内存大 * 只能继承父类构造函数的属性和方法,不能继承父类原型上的属性和方法; */ function Person(id) { this.id = id || 'id not'; this.fun = function(id){ return `只能继承原型上的属性和方法 - ${id}`; } // 原型上的属性和方法 Person.prototype = { value: '不能继承原型上的属性和方法', get() { console.log('penson get'); } } } function Adult(id) { this.type = '子类'; // 给父类传参 Person.call(this, id) } // 给父类传参 const adult = new Adult('前端伪大叔'); console.log(adult); // __proto__: Object 没有继承 Person原型~ 直接找到了 Object原型上 // 调用父类的属性和方法 console.log(adult.id); console.log(adult.fun('id')); // 因为只是实现了构造函数继承,所有无法使用原型上的属性和方法 console.log(adult.value); // undefined console.log(adult.get()); // Uncaught TypeError: adult.get is not a function</script>