0%

705_原型对象prototype

<script>
        function Star(uname, age) {
            this.age = age;
            this.uname = uname;
        }

        Star.prototype.sing = function () {
            console.log('我爱唱歌');
        }
        //为节省内存,不另外开辟内存空间,把公共方法定义在原型对象身上

        var ldh = new Star('刘德华', 18);
        var zxy = new Star('张学友', 58);

        ldh.sing()//我爱唱歌

        console.log(ldh.age);//18

        console.log(ldh.sing === zxy.sing);//true

        console.log(ldh.__proto__ === Star.prototype);//true
        //对象身上系统自己会添加一个__proto__指向构造函数的原型对象

        //方法的查找:
        //1、首先看ldh身上是否有相应的sing方法,如果有就执行这个对象身上的sing
        //2、如果有sing这个方法,因为有__proto__的存在,就会去构造函数原型对象prototype身上查找
    </script>