61.工厂/原型/构造

// 工厂
        function Person1(name, age, job) {
            let p = {};
            p.name = name;
            p.age = age;
            p.job = job;
            p.say = function () {
                console.log('my name is :' + this.name)
            }
            return p
        }
        let p1 = Person1('ll', 55, 'ss');
        p1.say();
        let p2 = Person1('mm', 55, 'ss');
        p2.say();
        // 构造
        function Person(name, age, job) {
            this.name = name;
            this.age = age;
            this.job = job;
            this.say = function () {
                console.log('my name is :' + this.name)
            }
        }
        let person1 = new Person('lily', 18, 'net');
        person1.say();
        // 原型
        function Person1() { }
        Person1.prototype = {
            name: 'lily',
            brother: ['ll', 'jj', 'mm'],
            age: 19,
            say: function () {
                console.log('~!!!~~~~~~')
                console.log('my name is :' + this.name);
                console.log('my brother ' + this.brother)
            }
        }
        let person2 = new Person1();
        let person22 = new Person1();
        person2.name = 'john';
        person2.brother.push('cc');
        person2.hi = function () {
            console.log('my name is:' + this.name + ' and ' + this.age + ' years old')
        }
        person2.say();
        person22.say();
        person2.hi();
        // 构造原型混合
        function Person3(name, age, job) {
            this.name = name;
            this.age = age;
            this.job = job;
            this.brother = ['kk', 'll', 'mm'];
        }
        Person3.prototype = {
            constructor: Person3,
            say: function () {
                console.log('my name is: ' + this.name)
                console.log('my brother~~>', this.brother)
            }
        }
        let person3 = new Person3('lilei', 22, 'mmp');
        let person4 = new Person3('hack', 22, 'mmp');
        person3.brother.push('cxv');
        person3.say();
        person4.say();
        // 动态原型
        function Person4(name, age, job) {
            this.name = name;
            this.age = age;
            this.job = job;
            this.brother = ['kk', 'll', 'mm'];
            if (typeof this.say != 'function') {
                Person4.prototype.say = function () {
                    console.log('~~~~~~~~~~~~~~~~~~~~~~~~~~~~')
                    console.log('my name is :' + this.name)
                    console.log('my brother~~>', this.brother)
                }
            }
        }
        let person5 = new Person4('bob', 23, 'teacher');
        person5.brother.push('nnnnnnnnn')
        person5.say();
        let person6 = new Person4('bob', 23, 'teacher');
        person6.say();
        // 原型链继承
        function Person5(name) {
            this.name = name
        }
        Person5.prototype = new Person4('hh', 11, 'kk');
        console.log('~~~~~~~~~原型链继承~~~~~~~~~~');
        let PPPP5 = new Person5('jjjjj')
        PPPP5.say();

  

posted @ 2019-05-15 21:15  famCc  阅读(173)  评论(0编辑  收藏  举报