JavaScript創建對象幾種方式

//利用函數來創建一個對象
function People(name){
    this.name = name;

    this.printName = function(){
        console.log(name);
    };
}
var p1 = new People('LouKit');


//直接採用對象創建
var obje = new Object();
obj.name = 'LouKit';
obj.printName = function(){
	 console.log(obj.name);
};

//利用對象字面量方式來創建
 var obj = {

 	name: 'LouKit',
    printNmae: function(){
        console.log(obj.name);
    }
 }

 ===============================================
//來個需求利用對象字面量方式來創建兩個對象出來

//構造對象
var obj1 = {
    name: 'LouKit1',
    age: 100,
    printName: function(){
        console.log(obj1.name);
    }
}
var obj2 = {
    name: 'LouKit2',
    age: 91,
    printName: function(){
        console.log(obj2.name);
    }
}

//有沒有感覺太麻煩了,不符合‘面向對象’,那轉變下采樣抽出參數,利用函數做做自動化
 ===============================================

 function createObj(name, age){
  var obj = {
    name: name,
    age: age,
    printName: function(){
            console.log(this.name);
        }
  };
  return obj;
}
var obj1 = createObj('LouKit1', 30);
obj1.printName();

var obj2 = createObj('LouKit2', 25);
obj2.printName();

//發線一個問題通過參數避免了每次都創建對象的麻煩 但構造高出來的對象都是Object類型對象

//那換成這樣:
function Person(name, age){
    this.name=name,
    this.age=age,
    this.printName=function(){
            console.log(this.name);
     }
}
var obj1 = new Person('LouKit1',20);
var obj2 = new Person('LouKit2',21);

//好像解決問題了,創建出來的對象也有自己的類型(Person),但每個實例的printName實際上作用一樣,
//每個實例要重複一遍,大量對象存在的時候是浪費內存

//那就再換種,原型方式
function Person(name, age){
    this.name=name,
    this.age=age,
}
Person.prototype.printName = function(){
    console.log(this.name);
}
、、、、、解決問題了



參考文章:

http://www.cnblogs.com/dolphinX/p/4385862.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章