js原型模式克隆

本文讲述了JavaScript中原型模式的实现,包括使用Object.create进行对象克隆,以及ES6引入的类语法虽然提供了新的继承方式,但实质上仍依赖于原型机制。
摘要由CSDN通过智能技术生成

原型模式的实现关键,是语言本身是否提供了clone方法。ECMAScript 5提供了Object.create方法,可以用来克隆对象

        var Plane = function(){
            this.blood = 100;
            this.attackLevel = 1;
            this.defenseLevel = 1;
        };

        var plane = new Plane();
        plane.blood = 500;
        plane.attackLevel = 10;
        plane.defenseLevel = 7;

        var clonePlane = Object.create( plane );
        console.log( clonePlane.blood )         //输出500
        console.log( clonePlane.attackLevel )   //输出10
        console.log( clonePlane.defenseLevel )  //输出7

在不支持Object.create方法的浏览器中,则可以使用以下代码

        Object.create = Object.create || function( obj ){
            var F = function(){};
            F.prototype = obj;
            return new F();
        }

原型模式不仅仅是一种设计模式,也是一种编程范型。JavaScript就是使用原型模式来搭建整个面向对象系统的。在JavaScript语言中不存在类的概念,对象也并非从类中创建出来的,所有的JavaScript对象都是从某个对象上克隆而来的。

es6提供了Class语法,来实现继承,但其背后仍是通过原型机制来创建对象:

        class Animal {
          constructor(name) {
            this.name = name;
          }
          getName() {
            return this.name;
          }
        }

        class Dog extends Animal {
          constructor(name) {
            super(name);
          }
          speak() {
            return "woof";
          }
        }

        var dog = new Dog("Scamp");
        console.log(dog.getName() + ' says ' + dog.speak());
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值