JavaScript 继承 (2)

本文详细介绍了JavaScript中三种常见的继承模式:原型式继承、寄生式继承和寄生组合式继承,并通过具体示例展示了每种继承方式的特点及其实现过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1:纯净的继承者 — 原型式继承


//传递一个字面量函数
function obj(o) { 

   //创建一个构造函数
  function F() {}

  //把字面量函数赋值给构造函数的原型
  F.prototype = o;

  //最终返回出实例化的构造函数 
  return new F(); 
}

//字面量对象
var box = {        
  name: 'lume',
  books: ['JavaScript', 'python', 'go']
};


var box1 = obj(box);   //传值

 console.log(box1.name);  // lume

box1.name = 'lumi';   // lumi 

console.log(box1.name);

console.log(box1.books);

box1.books.push('java');

console.log('box1',box1.books);
var box2 = obj(box);    //传值

console.log(box2.name);

console.log('box2',box2.books);     //引用类型共享了

结果如图:
这里写图片描述
这里我们可以看到 box2 的引用类型的值 也被修改了 ! ,还有不明白的 可以看下 注意下 上面代码的注解 理解下 !

2:如虎添翼 —– 寄生式继承
寄生式继承就是把原型式继承再次封装,然后在对象上扩展新的方法,再把新对象返回

// 先写一个原型
function fn(obj) {
  var F = function(){}
  F.prototype = obj;
  return new F;
}


var book = {
  name: "JavaScript book",
  books : ["python","go"]
}

function createBook(obj){
  // clone 一个新对象
  var clone = fn(obj);

  // 增强新对象
  clone.age = 18;
  clone.getName = function(){
    console.log(name);
  }

  return clone;   // 最后返回这个新对象

}

var obj1 = new createBook(book);

console.log(obj1.books);  // ["python","go"]

3: 终极继承者 —- 寄生组合式继承

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值