zoukankan      html  css  js  c++  java
  • 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();
    

      

  • 相关阅读:
    编译错误总结。
    9.7
    9.5
    9.6
    9.4
    9.3
    FutureTask取结果超时代码小测试
    java concurrent包常用类小结
    java Nio零散知识点整理
    java进阶教程unit_2java常用类(2)
  • 原文地址:https://www.cnblogs.com/famLiu/p/10872259.html
Copyright © 2011-2022 走看看