js 대상을 만드는 6가지 방식

6643 단어
1. 공장 모델
function createStudent(name,age){
    var o=new Object();
    o.name=name;
    o.age=age;
    o.myName=function(){
        alert(this.name);
    };
    return o;
}
var student1_ = createStudent('aaa',15);
var student2_ = createStudent('bbb',18);

// :  , 

 
2. 구조 함수 모드
function Student(name,age){
    this.name=name;
    this.age=age;
    this.myName=function(){
        alert(this.name);
    };
}
var student1_ = new Student('aaa',15);
var student2_ = new Student('bbb',18);

//new  
//1. 
//2. ,this 
//3. , 
//4. 
// :  

 
3. 구조 함수 모드 + 원형 모드
function Student(name,age){
    this.name=name;
    this.age=age;
}
Student.prototype.myName = function(){
    alert(this.name);                    
};    

var student1_ = new Student('aaa',15);
var student2_ = new Student('bbb',18);
student1__.myName();

 
4. 동적 원형 모델
function Student(name,age){
    this.name=name;
    this.age=age;
    if(typeof this.myName!="function"){// 
        Student.prototype.myName = function(){
            alert(this.name);                    
        };                    
    }
}
var student1_ = new Student('aaa',15);
student1_.myName();

 
5. 기생 구조 함수 모델
function Student(name,age){
    var o = new Object();
    o.name=name;
    o.age=age;
    o.myName=function(){
        alert(this.name);
    };                    
    return o;
}
var student1_ = new Student('aaa',15);
student1_.myName();
// , , 。

 
6. 안정적 구조 함수 모델
function Student(name,age){
    var o = new Object();
    var name=name;
    var age=age;
    o.myName=function(){
        alert(name);
    };
    return o; 
}
var student1_ = new Student('aaa',15);
student1_.myName();
// , this

좋은 웹페이지 즐겨찾기