JS函数进阶之继承用法实例分析


Posted in Javascript onJanuary 15, 2020

本文实例讲述了JS函数进阶之继承用法。分享给大家供大家参考,具体如下:

直接代码,不解释:

<html>
    <head>
        <title>js函数继承进阶</title>
        <meta charset="UTF-8"/>
        <script type="text/javascript">
            function person(name,age){  //对象的创建
                this.name=name;
                this.age=age;
//                this.test=function(a){
//                    console.log("能运行吗");
//                }
            }
            function book(name){
                this.name="是我吗";
                this.lookat=function(a){
                    console.log("看看能行吗");
                }
            }
            function czxt(name){
                this.name=name;
            }
            person.prototype.read=function(a){console.log("I can read");};
            book.prototype.sign=function(a){console.log("I am book"); return new book()};    //视其为一个对象的一个属性进行”继承“
            person.prototype.book=new book();               //直接进行“包含”
//            person.prototype=new book();
            czxt.prototype.appear=function(a){console.log("我是操作系统")};
            book.prototype.subject=new czxt();
//            book.prototype=new czxt();
            var p1=new person("张三",37);
//            p1.lookat();    //类内部的方法也可以调用
//            console.log(p1.name);   //包含类和父类都含有,是父类的name属性值。  "张三"
            console.log(p1.book.name); //用属性进行调用的话,是包含类的name属性   ”是我吗“
//            p1.sign();     //直接调用包含函数方法
//            p1.book.sign();   //调用对象属性包含的方法
//            p1.read();     //调用公共对象外函数
//            p1.test();    //函数调用函数内部的函数(视函数为对象)
//            p1.address="山东"; //每个特定对象主动添加对象属性
//            console.log(p1.address);
            var b1=new book();
//            b1.appear();   //调用其继承体内的函数
//            p1.appear();   //无法调用包含对象内的包含方法(无法直接调用孙子函数)
//            p1.book.appear();  //用属性调用也不行啊,不是函数可还行
//            p1.book.subject.appear(); //双重属性定义可以,牛逼了。
//            p1.sign().appear();  //person非属性调用book,在book的sign方法中添加一个book类型的返回值以此来调用book包含的方法。
        </script>
    </head>
    <body>
        <h3>js函数继承进阶</h3>
    </body>
</html>

运行结果:

JS函数进阶之继承用法实例分析

进一步理解,引入prototype,一方面是实现了同一个类创建对象时创建实现相同功能的方法,这些方法在对象创建时同样会占用内存,所以我们把方法定义到外面变成公共的方法,节省了内存(注:如果是类内部的方法构建两个对象时其内部的函数时不同的,不相等且不等同)另一方面,降低了代码的冗余,其中当你把一个类的prototype值设置为一个对象,那么你就拥有了其内部的属性和方法,当进行包含后可以直接利用带属性调用或者直接调用,这样有一个好处是:我们没有必要创建这个对象就可以直接调用其内部的方法。但是对于三层的包含关系,我们不能使用,要想使用就只能用连续双重的属性调用。对于内部属性值如果子类和父类的属性名相同,那么直接调用就是父类的属性,利用属性调用包含类可以调用子类的属性。

感兴趣的朋友可以使用在线HTML/CSS/JavaScript代码运行工具:http://tools.3water.com/code/HtmlJsRun测试上述代码运行效果。

更多关于JavaScript相关内容可查看本站专题:《JavaScript常用函数技巧汇总》、《javascript面向对象入门教程》、《JavaScript查找算法技巧总结》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》及《JavaScript数学运算用法总结》

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
JavaScript 弹出窗体点击按钮返回选择数据的实现
Apr 01 Javascript
jQuery仿Flash上下翻动的中英文导航菜单实例
Mar 10 Javascript
基于javascript html5实现3D翻书特效
Mar 14 Javascript
jquery基础知识第一讲之认识jquery
Mar 17 Javascript
AngularJS实现动态编译添加到dom中的方法
Nov 04 Javascript
浅析JavaScript中break、continue和return的区别
Nov 30 Javascript
slideToggle+slideup实现手机端折叠菜单效果
May 25 Javascript
node.js将MongoDB数据同步到MySQL的步骤
Dec 10 Javascript
详解基于Vue cli生成的Vue项目的webpack4升级
Jun 19 Javascript
Vuex 模块化使用详解
Jul 31 Javascript
JS性能优化实现方法及优点进行
Aug 30 Javascript
详解Vite的新体验
Feb 22 Javascript
JS函数进阶之prototy用法实例分析
Jan 15 #Javascript
JS函数基本定义与用法示例
Jan 15 #Javascript
JS几个常用的函数和对象定义与用法示例
Jan 15 #Javascript
JS自定义对象创建与简单使用方法示例
Jan 15 #Javascript
vue移动端使用canvas签名的实现
Jan 15 #Javascript
js实现鼠标拖拽div左右滑动
Jan 15 #Javascript
Vue数字输入框组件示例代码详解
Jan 15 #Javascript
You might like
jquery获取多个checkbox的值异步提交给php的方法
2015/06/24 PHP
PHP使用DOM和simplexml读取xml文档的方法示例
2017/02/08 PHP
PHP实现十进制、二进制、八进制和十六进制转换相关函数用法分析
2017/04/25 PHP
PHP开发实现微信退款功能示例
2017/11/25 PHP
由prototype_1.3.1进入javascript殿堂-类的初探
2006/11/06 Javascript
jquery checkbox实现单选小例
2013/11/27 Javascript
jquery实现个人中心导航菜单效果和美观都非常不错
2014/09/02 Javascript
简介JavaScript中toTimeString()方法的使用
2015/06/12 Javascript
基于jQuery实现动态数字展示效果
2015/08/12 Javascript
详解JavaScript中localStorage使用要点
2016/01/13 Javascript
JS数组去掉重复数据只保留一条的实现代码
2016/08/11 Javascript
在JSP中如何实现MD5加密的方法
2016/11/02 Javascript
jQuery实现标签页效果实战(4)
2017/02/08 Javascript
Vue.js实战之使用Vuex + axios发送请求详解
2017/04/04 Javascript
移动端触屏幻灯片图片切换插件idangerous swiper.js
2017/04/10 Javascript
js实现移动端轮播图
2020/12/21 Javascript
weui中的picker使用js进行动态绑定数据问题
2019/11/06 Javascript
jquery实现点击弹出对话框
2020/02/08 jQuery
详解ES6新增字符串扩张方法includes()、startsWith()、endsWith()
2020/05/12 Javascript
微信小程序 获取手机号 JavaScript解密示例代码详解
2020/05/14 Javascript
Python操作列表的常用方法分享
2014/02/13 Python
基础的十进制按位运算总结与在Python中的计算示例
2016/06/28 Python
Python使用Matplotlib实现雨点图动画效果的方法
2017/12/23 Python
python 实现对文件夹内的文件排序编号
2018/04/12 Python
python3.6+selenium实现操作Frame中的页面元素
2019/07/16 Python
Django ORM 常用字段与不常用字段汇总
2019/08/09 Python
有趣的Python图片制作之如何用QQ好友头像拼接出里昂
2020/04/22 Python
Python filter过滤器原理及实例应用
2020/08/18 Python
美国在线家装零售商:Build.com
2016/09/02 全球购物
比利时买床:Beter Bed
2017/12/06 全球购物
VLAN和VPN有什么区别?分别实现在OSI的第几层?
2014/12/23 面试题
人力资源管理毕业生自荐信
2014/06/26 职场文书
小学国庆节活动方案策划书
2014/09/16 职场文书
国际贸易实务实训报告
2014/11/05 职场文书
人事部:年度述职报告范文
2019/07/12 职场文书
漫画「你在春天醒来」第10卷封面公开
2022/03/21 日漫