[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优化效果?

