[js高手之路]原型式继承与寄生式继承详解

发布时间 - 2026-01-11 02:59:00    点击率:

一、原型式继承本质其实就是个浅拷贝,以一个对象为模板复制出新的对象

function object( o ){
      var G = function(){};
      G.prototype = o;
      return new G();
    }
    var obj = {
      name : 'ghostwu',
      age : 22,
      show : function(){
        return this.name + ',' + this.age;
      }
    };
    var obj2 = object( obj );
    console.log( obj2.name, obj.age, obj.show() );

object函数中,以对象o为模板,在object函数体里面,定义一个构造函数,让构造函数的原型对象(prototype)指向o,

返回构造函数的一个实例,这样就可以访问到对象o的所有属性和方法.

二、因为原型式继承是个浅拷贝,所以引用类型的数据共享在不同的实例之间

function object( o ){
      var G = function(){};
      G.prototype = o;
      return new G();
    }
    var obj = {
      skills : [ 'php', 'javascript' ]
    };
    var obj2 = object( obj );
    obj2.skills.push( 'python' );
    var obj3 = object( obj );
    console.log( obj3.skills ); //php,javascript,python

obj2改变了skills数组,obj3的skills结果就是其他实例改变的结果

三、在es5中,新增了一个函数Object.create()实现了原型式继承

var obj = {
      skills : [ 'php', 'javascript' ]
    };
    var obj2 = Object.create( obj );
    obj2.skills.push( 'python' );
    var obj3 = Object.create( obj );
    console.log( obj3.skills ); //php,javascript,python

四,寄生式继承就是把原型式继承再次封装,然后在对象上扩展新的方法,再把新对象返回

function object( o ){
      var G = function(){};
      G.prototype = o;
      return new G();
    }
    function CreateObj( srcObj ){
      var dstObj = object( srcObj );
      dstObj.sayName = function(){
        return this.userName;
      }
      return dstObj;
    }
    var obj = {
      userName : 'ghostwu',
    };
    var obj2 = CreateObj( obj );
    console.log( obj2.sayName() ); //ghostwu

以上这篇[js高手之路]原型式继承与寄生式继承详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。


# js原型式继承  # javascript原型链学习记录之继承实现方式分析  # Javascript中类式继承和原型式继承的实现方法和区别之处  # js类式继承与原型式继承详解  # JavaScript继承基础讲解(原型链、借用构造函数、混合模式、原型式继承、寄生式继承、寄生组合式  # 基于JavaScript实现继承机制之构造函数+原型链混合方式的使用详解  # JS继承--原型链继承和类式继承  # javascript学习笔记(九)javascript中的原型(prototype)及原型链的继承方  # JavaScript原型式继承实现方法  # 是个  # 给大家  # 之路  # 希望能  # 这篇  # 再把  # 小编  # 大家多多  # 就可以  # 实现了  # 一个函数  # 改变了  # 新增了  # function  # object  # var  # obj  # return  # prototype  # age 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 如何用西部建站助手快速创建专业网站?  laravel服务容器和依赖注入怎么理解_laravel服务容器与依赖注入解析  Laravel如何配置和使用缓存?(Redis代码示例)  laravel怎么为API路由添加签名中间件保护_laravel API路由签名中间件保护方法  C语言设计一个闪闪的圣诞树  智能起名网站制作软件有哪些,制作logo的软件?  详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)  python中快速进行多个字符替换的方法小结  如何基于云服务器快速搭建网站及云盘系统?  html5怎么画眼睛_HT5用Canvas或SVG画眼球瞳孔加JS控制动态【绘制】  如何用ChatGPT准备面试 模拟面试问答与职场话术练习教程  如何在IIS7上新建站点并设置安全权限?  Laravel如何设置自定义的日志文件名_Laravel根据日期或用户ID生成动态日志【技巧】  🚀拖拽式CMS建站能否实现高效与个性化并存?  网易LOFTER官网链接 老福特网页版登录地址  EditPlus中的正则表达式 实战(4)  Android利用动画实现背景逐渐变暗  夸克浏览器网页跳转延迟怎么办 夸克浏览器跳转优化  怎么用AI帮你设计一套个性化的手机App图标?  *服务器网站为何频现安全漏洞?  laravel怎么配置和使用PHP-FPM来优化性能_laravel PHP-FPM配置与性能优化方法  标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等?  长沙做网站要多少钱,长沙国安网络怎么样?  Laravel用户认证怎么做_Laravel Breeze脚手架快速实现登录注册功能  Laravel如何实现数据库事务?(DB Facade示例)  高端企业智能建站程序:SEO优化与响应式模板定制开发  北京网站制作公司哪家好一点,北京租房网站有哪些?  网站视频制作书签怎么做,ie浏览器怎么将网站固定在书签工具栏?  微信小程序 scroll-view组件实现列表页实例代码  太平洋网站制作公司,网络用语太平洋是什么意思?  Laravel怎么配置S3云存储驱动_Laravel集成阿里云OSS或AWS S3存储桶【教程】  免费的流程图制作网站有哪些,2025年教师初级职称申报网上流程?  如何在宝塔面板创建新站点?  如何在腾讯云服务器快速搭建个人网站?  Win11怎么设置默认图片查看器_Windows11照片应用关联设置  Laravel项目如何进行性能优化_Laravel应用性能分析与优化技巧大全  Laravel定时任务怎么设置_Laravel Crontab调度器配置  ai格式如何转html_将AI设计稿转换为HTML页面流程【页面】  网页制作模板网站推荐,网页设计海报之类的素材哪里好?  如何制作公司的网站链接,公司想做一个网站,一般需要花多少钱?  如何在景安服务器上快速搭建个人网站?  如何获取上海专业网站定制建站电话?  Laravel如何实现模型的全局作用域?(Global Scope示例)  Windows10怎样连接蓝牙设备_Windows10蓝牙连接步骤【教程】  Laravel怎么实现验证码功能_Laravel集成验证码库防止机器人注册  google浏览器怎么清理缓存_谷歌浏览器清除缓存加速详细步骤  CSS3怎么给轮播图加过渡动画_transition加transform实现【技巧】  详解jQuery中基本的动画方法  Edge浏览器如何截图和滚动截图_微软Edge网页捕获功能使用教程【技巧】  香港网站服务器数量如何影响SEO优化效果?