JS高级----------------->构造函数跟实例对象之间的关系

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
    <script>
        //自定义构造函数-----------实例化对象
        function Person(name, age, sex) {
            this.name = name;
            this.age = age;
            this.sex = sex;
            this.eat = function () {
              console.log("吃大蒜拌臭豆腐加榴莲酱");
            };
        }

        //构造函数--------->创建对象
        var per = new Person("小红", 18, "");
        per.eat();
        //实例对象是通过构造函数来创建
        //实例对象会指向自己的构造函数
        //显示这个对象的结构
        console.dir(per);
        console.dir(Person);

        //实例对象的构造器(构造函数)
        //实例对象的构造器是指向Person的,结果是true,所以,这个实例对象per就是通过Person来创建的
        console.log(per.constructor == Person);

        console.log(per.__proto__.constructor == Person);
        console.log(per.__proto__.constructor == Person.prototype.constructor);

        //构造函数
        function Animal(name) {
            this.name = name;
        }
        //实例对象
        var dog = new Animal("大黄");
        console.dir(dog);
        console.dir(Animal);

        console.log(dog.__proto__.constructor==Person);
        console.log(dog.__proto__.constructor==Animal);

        //判断这个对象是不是这种数据类型
        console.log(dog.constructor==Animal);

        console.log(dog instanceof Person);

        //总结:
        /*
         * 实例对象和构造函数之间的关系:
         * 1. 实例对象是通过构造函数来创建的---创建的过程叫实例化
         * 2.如何判断对象是不是这个数据类型?
         *  1) 通过构造器的方式 实例对象.构造器==构造函数名字
         *  2) 对象 instanceof 构造函数名字
         *  尽可能的使用第二种方式来识别,为什么?原型讲完再说
         * */

    </script>
    </body>
    </html>

 

posted @ 2018-08-23 19:37  {颜逸}  阅读(254)  评论(0编辑  收藏  举报