博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
javascript中的继承二 call()和apply()
阅读量:6652 次
发布时间:2019-06-25

本文共 1048 字,大约阅读时间需要 3 分钟。

hot3.png

前面的继承一中简单的描述了javascript的原型链继承属性拷贝

这里简单的用apply()和call()来实现 javascript中的继承

Object.apply(obj,agrs);

apply方法能劫持另外一个对象的方法,继承另外一个对象的属性

obj:这个对象将代替Function类里this对象
args:这个是数组,它将作为参数传给Function(args-->arguments)

这两个方法基本上是一个意思,区别在于 call 的第二个参数可以是任意类型,而apply的第二个参数必须是数组,也可以是arguments

<script type="text/javascript">

        //人类
        function Person(name,age){
            this.name = name;
            this.age = age;

            this.say = function(){

                console.log("Everyone can say !");
            }

            this.eat = function(){

                console.log("you can eat !");
            }
        }
        //学生类
        function Student(name,age){
            Person.apply(this,arguments);

            this.learn = function(){

                console.log("Interesting ?");
            }
        }

        var s1 = new Student("lee",14);

        console.log(s1.name);

        s1.say();
        s1.eat();
        s1.learn();
        console.log("===============分割线===============");
        //小学生类
        function S_Student(name,age,sexy){
            Student.apply(this,arguments);
            this.sexy = sexy == 1 ? "男孩" : "女孩";

        }

        var s_s1 = new S_Student("Tom",10,2);

        console.log(s_s1.name);
        s_s1.eat();
        s_s1.say();
        s_s1.learn();
        console.log(s_s1.sexy);
    </script>

运行结果:

转载于:https://my.oschina.net/u/3229305/blog/968529

你可能感兴趣的文章
Linux中断(interrupt)子系统之二:arch相关的硬件封装层【转】
查看>>
Linux/Android——Input系统之InputMapper 处理 (八)【转】
查看>>
006——数组(六)array_fill()array_filter()array_flip()array_key_exists()array_keys()
查看>>
PowerDesigner使用积累
查看>>
收了几个有背景的学生。
查看>>
洛谷P3954 成绩【民间数据】
查看>>
spring rest 容易被忽视的后端服务 chunked 性能问题
查看>>
鼠标滑过弹出层
查看>>
Difference Between Session.run and Tensor.eval
查看>>
MHA高可用架构与Atlas读写分离
查看>>
ucloud mysql
查看>>
linux系统编程:获取glibc的版本号
查看>>
java开发SSM框架的搭建(SpringMVC+Spring+MyBatis)
查看>>
ASP.NET CORE中控制器内return HTML 内容自动编码问题
查看>>
[MST] Restore the Model Tree State using Hot Module Reloading when Model Definitions Change
查看>>
可变函数
查看>>
vue之node.js的简单介绍
查看>>
网页中二维码识别规则
查看>>
博弈论进阶之树的删边游戏与无向图的删边游戏
查看>>
多台Mac电脑使用同一个apple开发者账号测试
查看>>