ES6学习笔记(构造函数与原型)

1.原型链
原型链图
很多情况下,我们需要手动的利用constructor 这个属性指回 原来的构造函数

ldh.__proto__ === Star.prototype

prototype相当于公共类,ldh和zxy调用同一个prototype。
constructor: Star 说明了这个prototype是指向Star的。

<script>
        function Star(uname, age) {
            this.uname = uname;
            this.age = age;
        }
        // 很多情况下,我们需要手动的利用constructor 这个属性指回 原来的构造函数
        Star.prototype = {
            // 如果我们修改了原来的原型对象,给原型对象赋值的是一个对象
            // 则必须手动的利用constructor指回原来的构造函数
            constructor: Star,
            sing: function() {
                console.log('我会唱歌');
            },
            movie: function() {
                console.log('我会演电影');
            }
        }
        var ldh = new Star('刘德华', 18);
        var zxy = new Star('张学友', 19);
        
		console.log(Star.prototype);
        console.log(ldh.__proto__);
        //Star.prototype === ldh.__proto__
        console.log(Star.prototype.constructor);
        console.log(ldh.__proto__.constructor);


        // 1. 只要是对象就有__proto__ 原型, 指向原型对象
        console.log(Star.prototype);
        console.log(Star.prototype.__proto__ === Object.prototype);
        // 2.我们Star原型对象里面的__proto__原型指向的是 Object.prototype
        console.log(Object.prototype.__proto__);
        // 3. 我们Object.prototype原型对象里面的__proto__原型  指向为 null
</script>

2.查找规则
从ldh对象开始查找,找不到就往ldh.__proto__找,star原型对象(star.prototype).__proto__找,向上找直到为null。若ldh和他的上级都有同样的属性异样的资料,那么取最近的ldh。
在这里插入图片描述
3.原型对象扩展内置对象的方法,以Array为例。

<script>
        // 原型对象的应用 扩展内置对象方法
        Array.prototype.sum = function() {
            var sum = 0;
            for (var i = 0; i < this.length; i++) {
                sum += this[i];
            }
            return sum;
        };
        // Array.prototype = {   //错误示范
        
        //     sum: function() {
        //         var sum = 0;
        //         for (var i = 0; i < this.length; i++) {
        //             sum += this[i];
        //         }
        //         return sum;
        //     }

        // }
        var arr = [1, 2, 3];
        console.log(arr.sum());
        console.log(Array.prototype);
        var arr1 = new Array(11, 22, 33);
        console.log(arr1.sum());
    </script>
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值