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 },
}
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
'서버(Server) > Server' 카테고리의 다른 글
[javascript] 객체( Object )와 생성자 함수 (0) | 2018.06.27 |
---|---|
javascript : prototype VS __proto__ (0) | 2018.04.21 |
javascript : 함수를 Apply 로 호출하기, javascript 에서 함수는 일종의 객체이다 (0) | 2018.04.20 |
javasript : 가변 인자와 유사한 argument 개체 (0) | 2018.04.20 |
javascript : 클로저와 private 멤버 유사 처리 (0) | 2018.04.20 |