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 相关文章推荐
jquery中ajax学习笔记一
Oct 16 Javascript
浅析jQuery中调用ajax方法时在不同浏览器中遇到的问题
Jun 11 Javascript
JS中多步骤多分步的StepJump组件实例详解
Apr 01 Javascript
浅析jquery unbind()方法移除元素绑定的事件
May 24 Javascript
AngularJS中实现动画效果的方法
Jul 28 Javascript
原生JS实现垂直手风琴效果
Feb 19 Javascript
JavaScript限制在客户区可见范围的拖拽(解决scrollLeft和scrollTop的问题)(2)
May 17 Javascript
vue.js中父组件调用子组件的内部方法示例
Oct 22 Javascript
解决angularjs service中依赖注入$scope报错的问题
Oct 02 Javascript
详解Vue 匿名、具名和作用域插槽的使用方法
Apr 22 Javascript
vue router 用户登陆功能的实例代码
Apr 24 Javascript
微信小程序HTTP接口请求封装代码实例
Sep 05 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
星际争霸 Starcraft 游戏介绍
2020/03/14 星际争霸
通过对php一些服务器端特性的配置加强php的安全
2006/10/09 PHP
使用php实现下载生成某链接快捷方式的解决方法
2013/05/07 PHP
php定时计划任务的实现方法详解
2013/06/06 PHP
PHP 输出URL的快捷方式示例代码
2013/09/22 PHP
PHP jQuery表单,带验证具体实现方法
2014/02/15 PHP
PHP接口继承及接口多继承原理与实现方法详解
2017/10/18 PHP
laravel配置Redis多个库的实现方法
2019/04/10 PHP
语义化 H1 标签
2008/01/14 Javascript
jQuery 中使用JSON的实现代码
2011/12/01 Javascript
AngularJS中的过滤器使用详解
2015/06/16 Javascript
js通过keyCode值判断单击键盘上某个键,然后触发指定的事件方法
2017/02/19 Javascript
vue-cli开发时,关于ajax跨域的解决方法(推荐)
2018/02/03 Javascript
Vue监听滚动实现锚点定位(双向)示例
2019/11/13 Javascript
[14:24]Optic Gaming vs PSG LGD BO3
2018/06/07 DOTA
Python解析xml中dom元素的方法
2015/03/12 Python
django创建超级用户过程解析
2019/09/18 Python
python实现tail -f 功能
2020/01/17 Python
django 外键创建注意事项说明
2020/05/20 Python
Python3如何使用多线程升程序运行速度
2020/08/11 Python
python,Java,JavaScript实现indexOf
2020/09/09 Python
Pandas中DataFrame交换列顺序的方法实现
2020/12/14 Python
Python爬虫分析微博热搜关键词的实现代码
2021/02/22 Python
用CSS3绘制三角形的简单方法
2015/07/17 HTML / CSS
详解利用canvas实现环形进度条的方法
2019/06/12 HTML / CSS
HTML5新特性之type=file文件上传功能
2018/02/02 HTML / CSS
canvas因为图片资源不在同一域名下而导致的跨域污染画布的解决办法
2019/01/18 HTML / CSS
viagogo法国票务平台:演唱会、体育比赛、戏剧门票
2017/03/27 全球购物
软件测试工程师面试问题精选
2016/10/28 面试题
实习生的自我鉴定范文欣赏
2013/11/20 职场文书
网络书店创业计划书
2014/02/07 职场文书
社区工作者感言
2014/03/02 职场文书
大一新生学期自我评价
2014/04/09 职场文书
2014年质量工作总结
2014/11/22 职场文书
幼儿园大班教师个人工作总结
2015/02/05 职场文书
安全员岗位职责范本
2015/04/11 职场文书