js 建立對象

1.工廠模式函數

        function createPerson(name, age, job) {
            var o = new Object();
            o.name = name;
            o.age = age;
            o.job = job;
            o.sayName = function () {
                alert(this.name);
            };
            return o;
        }
        var person1 = createPerson("Nicholas", 29, "Software Engineer");
        var person2 = createPerson("Greg", 62, "Doctor");

2.構造函數模式this

        function Person(name, age, job) {
            this.name = name;
            this.age = age;
            this.job = job;
            this.sayName = function () {
                alert(this.name);
            };
        }
        var person1 = new Person("Nicholas", 29, "Software Engineer");
        var person2 = new Person("Greg", 62, "Doctor");
        //與工廠模式的不一樣點
        //1.沒有顯示創造對象
        //2.直接將屬性和方法賦值給this
        //3.沒有return語句
        //4.使用new創造對象

        //使用方式
        //1.當作構造函數使用
        var person = new Person("Nicholas", 29, "Software");
        person.sayName();//Nicholas

        //2.做爲普通函數調用
        Person("Yellow", 27, "Doctor");
        window.sayName();//Doctor

        //3. 在另外一個對象的做用域中調用
        var o = new Object();
        Person.call(o, "King", 25, "Nurse");
        o.sayName();//King
        
        //缺點:每一個方法都要在每一個實例上從新建立一遍

3.原型模式spa

        function Person() {
        }
        Person.prototype.name = "Yellowshorts";
        Person.prototype.age = 29;
        Person.prototype.job = "Software";
        Person.prototype.sayName = function () {
            alert(this.name);
        }
        var person1 = new Person();
        person1.sayName();//Yellowshorts

        var person2 = new Person();
        person2.sayName();//Yellowshorts

        alert(person1.sayName == person2.sayName);//true
相關文章
相關標籤/搜索