javascript 대상 의 몇 가지 생 성 방식

1. 공장 모델
function createBlog(name, url) {
  var o = new Object();
  o.name = name;
  o.url = url;
  o.sayUrl= function() {
    alert(this.url);
  }
  return o;
}
var blog1 = createBlog('wuyuchang', 'http://www.jb51.net/');
alert(blog1);

2. 구조 함수 모드
function Blog(name, url) {
  this.name = name;
  this.url = url;
  this.alertUrl = function() {
    alert(this.url);
  }
}
 
var blog = new Blog('wuyuchang', 'http://www.jb51.net/');
alert(blog instanceof Blog);

3. 원형 모드
function CreateJsPerson(name, age) {
    this.name = name;
    this.age = age;
}

CreateJsPerson.prototype.writeJs = function () {
    console.log(this.name + ' write js');
};

var p1 = new CreateJsPerson('iceman' , 25);
var p2 = new CreateJsPerson('mengzhe' , 27);
    
console.log(p1.writeJs === p2.writeJs);

4. 혼합 구조 함수 와 원형 모드
function Blog(name, url, friend) {
  this.name = name;
  this.url = url;
  this.friend = friend;
}
Blog.prototype.alertInfo = function() {
  alert(this.name + this.url + this.friend);
}
var blog = new Blog('wuyuchang', 'http://tools.jb51.net/', ['fr1', 'fr2', 'fr3']),
  blog2 = new Blog('wyc', 'http://**.com', ['a', 'b']);
blog.friend.pop();
blog.alertInfo(); 
blog2.alertInfo();

5. 동적 원형 모드
function Blog(name, url) {
  this.name = name;
  this.url = url;
  if (typeof this.alertInfo != 'function') {
    //           
    alert('exe time');
    Blog.prototype.alertInfo = function() {
      alert(thia.name + this.url);
    }
  }
}
var blog = new Blog('wuyuchang', 'http://tools.jb51.net'),
  blog2 = new Blog('wyc', 'http:***.com');

6. 기생 구조 함수 모델
function SpecialArray()  
{  
    var value=new Array();  
    value.push.apply(value,arguments);  
    value.toPipedString=function()  
    {  
       return this.join("|");  
}  
  return value;  
}  
SpecialArray();

7. 온당 한 구조 함수 모델
function Process (nameF) {
    var o = new Object();
    var name = nameF;//1
    o.sayName = function(){
        alert(name);//2
    };
    return o;
}

var friend = Process('Nick');
friend.sayName();  //"Nick"
console.log(friend.name);//undefined//3

좋은 웹페이지 즐겨찾기