전역객체 : 특수한 객체다. 모든 객체는 이 전역객체의 프로퍼티다. 모든 전역함수와 변수는 window 객체의 프로퍼티다. 객체를 명시하지 않으면 암시적으로 window의 프로퍼티로 간주된다.
예시
//
function func(){
 alert('hello?');
}
func();
window.func();

 

//
var o = {'func':function (){
 alert('hello?');
}}
o.func();
window.o.runc();

 

this : 함수 내에서 함수 호출 맥락을 의미한다. 함수와 객체의 관계를 연결시켜주는 실질적인 연결점 역할을 한다. 생성자가 실행되기 전까지는 객체는 변수에도 할당될 수 없기 때문에, this가 아니면 어떠한 작업도 할 수 없다. 함수의 메소드인 apply, call을 이용하면 this의 값을 제어 할 수 있다.
예시
//
function func(){
 if(window === this){
  document.write("window === this");
 }
}
func();

 

//
var o = {
 func : function (){
  if(o === this){
   document.write("o === this");
  }
 }
}
o.func();

 

//
var funcThis = null;
 
function Func(){
    funcThis = this;
}
var o1 = Func();
if(funcThis === window){
    document.write('window <br />');
}
 
var o2 = new Func();
if(funcThis === o2){
    document.write('o2 <br />');

}

 

//
var o = {}
var p = {}
function func(){
    switch(this){
        case o:
            document.write('o<br />');
            break;
        case p:
            document.write('p<br />');
            break;
        case window:
            document.write('window<br />');
            break;         
    }
}
func();
func.apply(o);
func.apply(p);

'Programming > Javascript' 카테고리의 다른 글

표준내장객체, Object 객체  (0) 2018.01.03
상속, prototype  (0) 2018.01.03
생성자와 new  (0) 2018.01.03
함수의 호출  (0) 2018.01.03
arguments, 매개변수의 수  (0) 2018.01.03
블로그 이미지

꼴통보안인

,

생성자 : 객체를 만드는 역할을 하는 함수. 객체의 구조를 재활용 할때 사용하는 것이다. 자바스크립트에서 함수는 객체를 만드는 창조자이다. 그리고 함수를 호출할 때 new를 붙이면 새로운 객체를 만든 후에 이를 리턴한다. 생성자 함수는 일반 함수와 구분하기 위해서 첫글자를 대문자로 표시한다.


예시
//
function Person(){}
var p = new Person();
p.name = 'egoing';
p.introduce = function(){
    return 'My name is '+this.name;
}
document.write(p.introduce());

 

//
function Person(){}
var p1 = new Person();
p1.name = 'egoing';
p1.introduce = function(){
    return 'My name is '+this.name;
}
document.write(p1.introduce()+"<br />");
 
var p2 = new Person();
p2.name = 'leezche';
p2.introduce = function(){
    return 'My name is '+this.name;
}
document.write(p2.introduce());

 

//
function Person(name){
    this.name = name;
    this.introduce = function(){
        return 'My name is '+this.name;
    }  
}
var p1 = new Person('egoing');
document.write(p1.introduce()+"<br />");
 
var p2 = new Person('leezche');
document.write(p2.introduce());

'Programming > Javascript' 카테고리의 다른 글

상속, prototype  (0) 2018.01.03
전역객체와 this  (0) 2018.01.03
함수의 호출  (0) 2018.01.03
arguments, 매개변수의 수  (0) 2018.01.03
내부함수와 클로저  (0) 2018.01.03
블로그 이미지

꼴통보안인

,

함수 호출
기본방법 예제
function func(){
}
func();

 

apply 예제
function sum(arg1, arg2){
 return arg1+arg2;
}
alert(sum.apply(null,[1,2]));

 

sum은 Function 객체의 인스턴스다. 그렇기 때문에 객체 function의 메소드 apply를 호출할 수 있다. apply 메소드는 두개의 인자를 가질 수 있는데, 첫번째 인자는 함수가 실행될 맥락이다.

 

//
o1 = {val1:1, val2:2, val3:3}
o2 = {v1:10, v2:50, v3:100, v4:25}
function sum(){
    var _sum = 0;
    for(name in this){
        _sum += this[name];
    }
    return _sum;
}
alert(sum.apply(o1)) // 6
alert(sum.apply(o2)) // 185

 

우선 두개의 객체를 만들었다. o1는 3개의 속성을 가지고 있다. 각각의 이름은 val1, val2, val3이다. o2는 4개의 속성을 가지고 있고 o1과는 다른 속성 이름을 가지고 있고 속성의 수도 다르다.

그 다음엔 함수 sum을 만들었다. 이 함수는 객체의 속성을 열거할 때 사용하는 for in 문을 이용해서 객체 자신(this)의 값을 열거한 후에 각 속성의 값을 지역변수 _sum에 저장한 후에 이를 리턴하고 있다.

객체 Function의 메소드 apply의 첫번째 인자는 함수가 실행될 맥락이다. 이렇게 생각하자. sum.apply(o1)은 함수 sum을 객체 o1의 메소드로 만들고 sum을 호출한 후에 sum을 삭제한다.

 

//
function sum(){
    var _sum = 0;
    for(name in this){
  if(typeof this[name] !== 'function')
          _sum += this[name];
    }
    return _sum;
}
o1 = {val1:1, val2:2, val3:3, sum:sum}
o2 = {v1:10, v2:50, v3:100, v4:25, sum:sum}
alert(sum.apply(o1)) // 6
alert(sum.apply(o2)) // 185

'Programming > Javascript' 카테고리의 다른 글

전역객체와 this  (0) 2018.01.03
생성자와 new  (0) 2018.01.03
arguments, 매개변수의 수  (0) 2018.01.03
내부함수와 클로저  (0) 2018.01.03
값으로써의 함수와 콜백, 그리고 비동기 처리  (0) 2018.01.03
블로그 이미지

꼴통보안인

,