JavaScript之Prototype学习(二)

代码: 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Prototype Study</title>

    <script type="text/javascript" charset="utf-8">


        function Person(id) {
            this.id = id;
        }

        Person.prototype = {
//            constructor : Person,
            name : 'z3',
            age : 25,
            job : 'programmer',
            say : function () {
                window.document.write('我是原型对象中的方法.' + '<br><br>');
            }
        }

        // ECMA5 给原型对象重新设置构造器的方法  Object.defineProperty()
        /*
            3 个参数
            第一个参数: 重设构造器的对象
            第二个参数: 设置什么属性
            第三个参数: options配置项
         */
        Object.defineProperty(Person.prototype, 'constructor',{
           emumerable : false,
           value : Person
        });

        var p = new Person('N0001');
        p.say();
        document.write(p.id + '<br><br>');

        //输出原型对象的构造器
        document.write(Person.prototype.constructor + '<br><br>');

        //枚举对象的属性和方法
        //使用for in 不会输出constructor属性  因为已经设置emumerable 为false
        for (var attr in p){
            document.write(attr + '<br>');
        }


        /**
         * 原型对象的动态特性
         */
        function ProgramLanguage() {

        }

        var c = new ProgramLanguage();

        ProgramLanguage.prototype = {
            name : 'javascript',
            helloWorld : function () {
                document.write('<br><br><br>' + 'Hello world, welcome to javascript.' + '<br><br><br>');
            }
        }

//        c.helloWorld();             //error : Uncaught TypeError: c.helloWorld is not a function


        var c2 = new ProgramLanguage();
        c2.helloWorld();  // it's OK 





    </script>


</head>
<body>

</body>
</html>


结果: 



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值