有关js对象构造函数的几个问题?

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        // 构造函数创建对象
        function Hero(name, skill, hp, mp, adress, home, price) {
            this.name = name;
            this.skill = skill;
            this.hp = hp;
            this.mp = mp;
            this.adress = adress;
            this.home = home;
            this.price = price;
            var a = 78;
            // this.sayName = function () {
            // alert(this.name); }
            // 函数修改
            this.sayName = sayName;

        }
        var sayName = function () {
            console.log(this.name); //问题:::::::this为何能在外面生效??????????????????????????????????????????????
        }

        // 上述命名的对象只是一类事物所公共拥有的特征
        var gailun = new Hero('盖伦', '德玛西亚', 7000, 0, '英雄联盟', '德玛西亚之都', 6300);
        for (var key in gailun) {
            console.log(gailun[key]);
        }
        // 操作对象
        gailun.sayName();
        var lianjin = new Hero('炼金术师', '祖安', 7800, 90000, '英雄联盟', '祖安支援者', 1350);
        console.log('--------------------');
        for (var key in lianjin) {
            console.log(key) //循环遍历属性名,z这为什么没有打印下面的speed????????????????????????????????????
        }

        for (var key in lianjin) {
            console.log(lianjin[key]); //循环遍历属性值
        }

        for (var key in lianjin) {
            console.log(key + ':' + lianjin[key]); //遍历属性名加值得组合
        }
        // =================================================================
        lianjin['price'] = 8700; // 更改属性值
        lianjin['speed'] = '1788km/h'; //增加属性
        console.log(lianjin['speed']); //后增加的属性并没有被之前对象循环遍历的打印上去?????????????????????????????????
        for (var key in lianjin) {
            console.log(key);
        }
    </script>
</body>

</html>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值