JavaScript 原型的使用(prototype)

本文介绍了JavaScript中构造函数Person的定义及原型的两种使用方法:通过动态特性添加成员和直接替换原型对象。展示了不同方法下对象实例的行为差异。


demo.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script>
        function Person(name, age, gender) {
            this.name = name;
            this.age = age;
            this.gender = gender;
        }

        //原型的使用方法
        //1.利用对象的动态特性给原型对象添加成员 (添加的属性少,建议使用该方式)
        //2.直接替换原型对象 (添加的属性多,建议使用该方式)

        //如果使用第二种方式使用原型,那么会出现如下问题:
        //在替换原型之前创建的对象的原型 和 在替换原型对象之后的创建的对象的原型 不是同一个!

        //为原型对象动态添加属性
        Person.prototype.sayHello = function () {
            console.log("Nice to meet you all");
        }

        var p = new Person("刘能", 18, "male");
        p.sayHello();  // 替换原型之前的对象的原型成员

        //直接替换原型对象
        Person.prototype = {
            msg : "aaaa"
        };

        var p1 = new Person("xzy",18,"male");
        console.log(p1.msg);

        p1.sayHello();  //(抛异常) 替换原型之后实例化的对象,原型是新替换的原型。
        p.sayHello();   //替换原型之前实例化的对象,原型还是之前的原型。


    </script>
</head>
<body>

</body>
</html>



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值