A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

构造函数

<!DOCTYPE html>
<html lang="en">
<head>
        <meta charset="UTF-8">
        <title>构造函数</title>
        <script type="text/javascript">
                function Person(name,age,job){
                        this.name = name;
                        this.age = age;
                        this.job = job;

                        this.showName = function(){
                                alert(this.name);
                        }
                        this.showAge = function(){
                                alert(this.age);
                        }
                        this.showJob = function(){
                                alert(this.job);
                        }
                }

                //new的作用就相当于工厂模式中最开始创建了一个空对象,最后把对象返回
                var Bob = new Person('bob',18,'产品汪');
                Bob.showJob();

                var Alex = new Person('alex',19,'运营喵');
                Alex.showJob();

                alert(Bob.showName == Alex.showName);//false
        </script>
</head>
<body>
       
</body>
</html>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
原型模式

<!DOCTYPE html>
<html lang="en">
<head>
        <meta charset="UTF-8">
        <title>原型模式</title>
        <script type="text/javascript">
                function Person(name,age,job){
                        this.name = name;
                        this.age = age;
                        this.job = job;

                        Person.prototype.showName = function(){
                                alert(this.name);
                        }
                        Person.prototype.showAge = function(){
                                alert(this.age);
                        }
                        Person.prototype.showJob = function(){
                                alert(this.job);
                        }
                }

                //先去自己的对象中找showName函数,再去构造函数的原型找
                var Lucy = new Person('lucy',18,'测试鼠');
                //重写自身对象中的方法,不会影响其它对象
                Lucy.showName = function(){
                        alert('我的名字是' + this.name);
                }
                Lucy.showName();//我的名字是lucy

                var Lily = new Person('lily',19,'市场鸡');
                Lily.showName();//lily

                alert(Lucy.showName == Lily.showName);//false
        </script>
</head>
<body>
       
</body>
</html>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
call和apply

<!DOCTYPE html>
<html lang="en">
<head>
        <meta charset="UTF-8">
        <title>call和apply</title>
        <script type="text/javascript">
                /*
                call和apply的区别

                二者都可以改变当前的this,区别在于apply方法要将参数放入数组中再传参
                */
                function aa(a,b){
                        alert('我的this是' + this + ',我的a是' + a + ',我的b是' + b);
                }

                //我的this是[object Window],我的a是2,我的b是3
                // aa(2,3);

                //我的this是abc,我的a是2,我的b是3
                // aa.call('abc',2,3);

                //我的this是abc,我的a是2,我的b是3
                aa.apply('abc', [2,3]);
        </script>
</head>
<body>
       
</body>
</html>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
函数的继承

<!DOCTYPE html>
<html lang="en">
<head>
        <meta charset="UTF-8">
        <title>函数的继承</title>
        <script type="text/javascript">
                //父类
                function Fclass(name, age){
                        this.name = name;
                        this.age = age;
                }
                Fclass.prototype.showName = function(){
                        alert(this.name);
                }
                Fclass.prototype.showAge = function(){
                        alert(this.age);
                }

                //子类
                function Sclass(name, age, job){
                        //属性用call或者apply的方式来继承
                        Fclass.call(this, name, age);
                        this.job = job;
                }
                //方法继承:将父类的一个实例赋值给子类的原型属性
                Sclass.prototype = new Fclass();
                Sclass.prototype.showJob = function(){
                        alert(this.job);
                }

                //由于已经继承了父类的属性和方法,所以可以直接调用
                var Driver = new Sclass('tom',18,'老司机');
                Driver.showName();
                Driver.showAge();
                Driver.showJob();
        </script>
</head>
<body>
       
</body>
</html>
---------------------
【转载,仅作分享,侵删】
作者:YRyr.*
原文:https://blog.csdn.net/weixin_43152725/article/details/86483058


1 个回复

正序浏览
奈斯,感谢分享
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马