반응형
객체 생성

객체는 new Object()Object.create() 또는 literal 표기법 (initializer 표기법)을 사용하여 초기화될 수 있습니다. 객체 초기자(object initializer)는 0개 이상인 객체 속성명 및 관련값 쌍 목록입니다, 중괄호({})로 묶인.


1
2
3
4
5
6
7
8
9
10
11
var o = {};
var o = { a: "foo", b: 42, c: {} };
 
var a = "foo", b = 42, c = {};
var o = { a: a, b: b, c: c };
 
var o = {
  property: function ([parameters]) {},
  get property() {},
  set property(value) {},
};

  






설명

객체 초기자는 Object의 초기화를 기술하는 식(expression)입니다. 객체는 속성으로 구성됩니다, 객체를 설명하는 데 사용되는. 객체의 속성값은 primitive 데이터 형 또는 다른 객체를 포함할 수 있습니다.

객체 생성

속성이 없는 빈 객체는 다음과 같이 만들 수 있습니다:

var object = {};

리터럴(literal) 또는 초기자(initializer) 표기법의 이점은, 빠르게 중괄호 내 속성이 있는 객체를 만들 수 있다는 것입니다. 당신은 그저 쉼표로 구분된 키: 값 쌍 목록을 표기합니다. 

다음 코드는 키가 "foo", "age" 및 "baz"인 세 속성이 있는 객체를 만듭니다. 이들 키값은 문자열 "bar", 숫자 42 그리고 세 번째 속성은 그 값으로 다른 객체를 갖습니다.

var object = {
  foo: "bar",
  age: 42,
  baz: { myProp: 12 },
}


javascript : 함수와 객체, new



1
2
3
4
5
6
var n = new Number();
 
var s = 3;
console.log(typeof n); //대문자 Number 는 정수를 담는 객체, typeof 로 확인 되는 Number 타입 문자열은 object
console.log(typeof s); //변수가 숫자로 정의 될때의 타입은 소문자 문자열로 "number"
 


결과


object

number




함수가 생성자가 되는 시점


1
2
3
4
5
6
function Person() {         //Person 함수 이지만 
 
};
 
var p = new Person();       //new 함수명을 쓰게 되면 이때 Person 은 생성자가된다
console.log(p);             //즉 객체를 만든것

//즉 Person 에 인자를 추가 하게 되면 객체 생성시 생성자 인수를 넘길 수 있는 형태가됨
//단 생성자를 통한 초기화가 이뤄짐으로 멤버 변수에 인자 값을 대입하려면
//this.멤버변수 = 매개변수; 의 형태인 this. 이 들어가야한다



일반 함수 앞에 new 를 붙여 생성하면 이 함수가 생성자가 된다

즉 객체를 생성한다는 것이 javascript 에서 custom 형 객체를 생성하는 법인데


javascript 에선 함수 자체에 this 가 들어가 있다는 것 자체가 원래 함수라기 보단 객체라는 점을 내포하고 있다라고 볼 수 있는 부분이기 대문에

함수가 생성자로 취급 되는 대목이 그렇게 생소하게 와닿지는 않는 부분이긴하다








전역객체와 객체지향 프로그래밍







전역 this 는 전역객체 window 와 동일한 객체를 말한다


즉 this.funcThis === window.funcThis 는 true 를 리턴한다




Func() 가 생성자로 호출 될때 funcThis 변수는 o2 에 대한 this 를 담는 것임으로 

funcThis === o2 의 결과는 true 가 된다






그러나 아래의 결과는 false 를 보이는데 전역 왜냐하면 this 와 o2에 대한 this===funcThis 는 서로 다른객체임으로

funcThis === this;

false


이런 결과가 나타남




p.s javascript 가 추구하는 방향을 이해하지 못하는것은 아니지만 그러나 항상 javascript 는 생각 이상으로 이것저것 모아놓은 느낌을 들게한다





일부 ref : https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Operators/Object_initializer

일부 ref : https://opentutorials.org/module/532/6571

반응형

+ Recent posts