美文网首页
创建对象

创建对象

作者: YoungEvita | 来源:发表于2018-03-18 21:03 被阅读0次

    1. 原始方法

    var person = new Object();
    person.name = "Andy";
    person.age = "17";
    person.sayName = function() {
        console.log(this.name);
    };
    person.sayName(); // Andy
    
    var person = {
        name: "Andy",
        age: "17",
        sayName: function() {
            console.log(this.name);
        }
    };
    person.sayName(); // Andy
    

    2. 工厂方法

    function createPerson() {
        var person = new Object();
        person.name = "Andy";
        person.age = "17";
        person.sayName = function() {
            console.log(this.name);
        }
        return person;
    }
    var person = createPerson();
    person.sayName(); // Andy
    
    function createPerson(name, age) {
        var person = new Object();
        person.name = name;
        person.age = age;
        person.sayName = sayName;
        return person;
    }
    function sayName() {
        console.log(this.name);
    }
    var person1 = createPerson("Andy", "17");
    person1.sayName(); // Andy
    var person2 = createPerson("Lucy", "16");
    person2.sayName(); // Lucy
    

    3. 构造函数

    function Person(name, age) {
        this.name = name;
        this.age = age;
        this.sayName = function() {
            console.log(this.name);
        }
    }
    var person = new Person("Andy", "17");
    person.sayName(); // Andy
    

    4. 原型函数

    function Person() {}
    Person.prototype.name = "Andy";
    Person.prototype.age = "17";
    Person.prototype.friends = new Array("Jack", "Tony");
    Person.prototype.sayName = function() {
        console.log(this.name);
    }
    Person.prototype.showFriends = function() {
        console.log(this.friends);
    }
    var person1 = new Person();
    var person2 = new Person();
    person1.sayName(); // Andy
    person2.sayName(); // Andy
    person1.name = "Lucy";
    person1.sayName(); // Lucy
    person2.sayName(); // Andy
    person1.showFriends(); //  Jack, Tony
    person2.showFriends(); // Jack, Tony
    person1.friends.push("Tom");
    person1.showFriends(); // Jack, Tony, Tom
    person2.showFriends(); // Jack, Tony, Tom
    

    5. 混合构造函数\原型函数

    function Person(name, age) {
        this.name = name;
        this.age = age;
        this.friends = new Array("Jack", "Tony");
    }
    Person.prototype.sayName = function() {
        console.log(this.name);
    }
    Person.prototype.showFriends = function() {
        console.log(this.friends);
    }
    var person1 = new Person("Andy", "17");
    var person2 = new Person("Lucy", "16");
    person1.sayName(); // Andy
    person2.sayName(); // Lucy
    person1.showFriends(); // Jack, Tony
    person2.showFriends(); // Jack, Tony
    person1.friends.push("Tom");
    person1.showFriends(); // Jack, Tony, Tom
    person2.showFriends(); // Jack, Tony
    

    6. 动态原型方法

    function Person(name, age) {
        this.name = name;
        this.age = age;
        this.friends = new Array("Jack", "Tony");
        if(typeof Person._initialized == "undefined"){
            Person.prototype.sayName = function() {
                console.log(this.name);
            }
            Person.prototype.showFriends = function() {
                console.log(this.friends);
            }
            Person._initialized = true;
        }else{}
    }
    var person1 = new Person("Andy", "17");
    var person2 = new Person("Lucy", "16");
    person1.sayName(); // Andy
    person2.sayName(); // Lucy
    person1.showFriends(); // Jack, Tony
    person2.showFriends(); // Jack, Tony
    person1.friends.push("Tom");
    person1.showFriends(); // Jack, Tony, Tom
    person2.showFriends();// Jack, Tony
    

    相关文章

      网友评论

          本文标题:创建对象

          本文链接:https://www.haomeiwen.com/subject/bhryqftx.html