怎么浅析JavaScript的写类方式
发表于:2024-11-22 作者:千家信息网编辑
千家信息网最后更新 2024年11月22日,怎么浅析JavaScript的写类方式,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。这篇开始会记录一些写类的工具函数。以
千家信息网最后更新 2024年11月22日怎么浅析JavaScript的写类方式
怎么浅析JavaScript的写类方式,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
这篇开始会记录一些写类的工具函数。以下列举的有的是工作中碰到的,有的是从书籍或网上收集的。
构造函数 + 原型 直接组装一个类;同一构造函数将组装出同一类型
/** * $class 写类工具函数之一 * @param {Function} constructor * @param {Object} prototype */ function $class(constructor,prototype) { var c = constructor || function(){}; var p = prototype || {}; c.prototype = p; return c; }
用构造函数来生成类实例的属性(字段),原型对象用来生成类实例的方法。
//构造函数 function Person(name) { this.name = name; } //原型对象 var proto = { getName : function(){return this.name}, setName : function(name){this.name = name;} } //组装 var Man = $class(Person,proto); var Woman = $class(Person,proto);
这时候已经得到了两个类Man,Woman。并且是同一个类型的。测试如下:
console.log(Man == Woman); //true console.log(Man.prototype == Woman.prototype); //true
创建对象看看
var man = new Man("Andy"); var woman = new Woman("Lily"); console.log(man instanceof Man); //true console.log(woman instanceof Woman); //true console.log(man instanceof Person); //true console.log(woman instanceof Person); //true
ok,一切如我们所期望。但是有个问题,下面代码的结果输出false
console.log(man.constructor == Person);//false
这让人不悦:从以上的代码看出man的确是通过Man类new出来的 var man = new Man("Andy"),那么对象实例man的构造器应该指向Man,但为何事与愿违呢?
原因就在于$class中重写了Person的原型:c.prototype = p;
好了,我们把$class稍微改写下,将方法都挂在构造器的原型上(而不是重写构造器的原型),如下:
function $class(constructor,prototype) { var c = constructor || function(){}; var p = prototype || {}; // c.prototype = p; for(var atr in p){ c.prototype[atr] = p[atr]; } return c; }
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注行业资讯频道,感谢您对的支持。
函数
原型
对象
实例
构造器
代码
工具
方法
类型
帮助
生成
方式
清楚
事与愿违
有的是
不悦
两个
书籍
内容
原因
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
课前五分钟网络安全
网络安全杯辩论赛
数据库怎么计算闭包
web 服务器开发
手机网络安全防护软件排行
网络安全教育讲座讲稿
部队网络安全警示小视频
校园网络安全内容摘抄1000字
全球海陆数据库简介
服务器24小时挂机
办公室计算机网络安全管理
网络安全对比软件开发
1u服务器组装
海南独立服务器
莱芜智慧团建软件开发哪儿好
数据库操作项目结论实训报告
服务器批量管理工具eod
盈建科服务器设置
2018电信软件开发招标
山东春考网络技术大纲
贵州大学图书馆万方数据库
u2固态服务器怎么接
兰州网络技术公司地址
无线网络安全管理技巧系列
钉钉邮箱服务器配置错误
软件开发需要考虑功能安全
sqlite数据库路径
STM32温控软件开发
web技术和数据库如何连接
学校网络安全应急响应预案