标签:数学 环境 push object 存在 creat 推荐 相互 定义
    // 定义工厂函数
    function createPerson(name, age, hobby) {
        // 创建一个临时object对象
        var obj = new Object();
        // 将工厂函数的参数赋值给临时对象
        obj.name = name;
        obj.age = age;
        obj.hobby = hobby;
        obj.sayName = function() {
            console.log("我的名字叫:"+this.name);
        }
        // 返回这个包装好的临时对象
        return obj;
    }
    //使用工厂函数创建对象
    var p1 = createPerson(‘Tom‘, 12, "sing");
    var p2 = createPerson(‘mayra‘, 18, "draw");
            // 定义构造函数
    function Person(name, age, hobby) {
        this.name = name;
        this.age = age;
        this.hobby = hobby;
        this.sayName = function() {
            console.log("我的名字叫:"+this.name);
        }
    }
    // 使用构造函数实例化
    var p1 = new Person(‘Tom‘, 12, "sing");
    var p2 = new Person(‘mayra‘, 18, "draw");    // 定义构造函数
    function Person() {
        
    }
    // 定义原型
    Person.prototype = {
        constructor: Person,  //重写constructor
        name: ‘Tom‘,
        books: [‘数学‘,‘英语‘], // 引用类型
        country: "china", // 共享属性
        sayName: function () {  // 共享方法
            console.log("我的名字叫:" + this.name);
        },
    };
    // 使用构造函数实例化
    var p1 = new Person();
    var p2 = new Person();
    p1.books.push(‘语文‘);
    console.log(p1.books);  // ‘数学‘,‘英语‘,‘语文‘
    console.log(p2.books);  // ‘数学‘,‘英语‘,‘语文‘    p1实例影响到p2!!!    // 定义构造函数
    function Person(name, age, hobby) {
        this.name = name;
        this.age = age;
        this.hobby = hobby;
        this.books = [‘数学‘,‘英语‘]; //引用类型
    }
    // 定义原型(定义共享的属性)
    Person.prototype = {
        constructor: Person,  //重写constructor
        country: "china", // 共享属性
        sayName: function () {  // 共享方法
            console.log("我的名字叫:" + this.name);
        },
    };
    // 使用构造函数实例化
    var p1 = new Person(‘Tom‘, 12, "sing");
    var p2 = new Person(‘mayra‘, 18, "draw");
    p1.books.push(‘语文‘);
    console.log(p1.books);  // ‘数学‘,‘英语‘,‘语文‘
    console.log(p2.books);  // ‘数学‘,‘英语‘    p1实例不会影响到p2!!!
    console.log(p1.country);  // china
    console.log(p2.country);  // china
    p1.sayName();   // 我的名字叫:Tom
    p2.sayName();   // 我的名字叫:mayra特点:将所有信息都封装在构造函数类,动态初始化原型
    // 定义构造函数
    function Person(name, age, hobby) {
        this.name = name;
        this.age = age;
        this.hobby = hobby;
        //  判断当前是否具有sayName方法,没有就初始化原型添加该方法
        if(typeof this.sayName != ‘function‘) {
            // 这个只会在第一次使用构造函数时执行
            Person.prototype.sayName = function () {
                console.log("我的名字叫:" + this.name);
            }
        }
    }
    // 使用构造函数实例化
    var p1 = new Person(‘Tom‘,13,‘sing‘);
    var p2 = new Person(‘bob‘,16,‘draw‘);
    p1.sayName();
    p2.sayName();  
        function Person(name, age, hobby) {
        // 创建一个临时object对象
        var obj = new Object();
        // 将参数赋值给临时对象
        obj.name = name;
        obj.age = age;
        obj.hobby = hobby;
        obj.sayName = function() {
            console.log("我的名字叫:"+this.name);
        };
        // 返回这个包装好的临时对象
        return obj;
    }
    //使用函数创建对象
    var p1 = new Person(‘Tom‘, 12, "sing");
    var p2 = new Person(‘mayra‘, 18, "draw");    function Person(name) {
        // 创建一个临时object对象
        var obj = new Object();
        
        obj.sayName = function() {
            console.log(this.name);
        };
        // 返回这个包装好的临时对象
        return obj;
    }
    //函数创建对象
    var p1 = new Person(‘Tom‘);
    var p2 = new Person(‘mayra‘);
    p1.sayName(); //Tom  只能通过这一种方式访问name的值7中创建对象的方式(工厂模式、构造函数模式、原型模式、动态原型模式等分析)
标签:数学 环境 push object 存在 creat 推荐 相互 定义
原文地址:https://www.cnblogs.com/mengjingmei/p/9383372.html