1. 동적 형변환
값에 따라 변수 형변환이 자동으로 이루어진다. 이는 다른 스크립트 언어들도 마찬가지이다.
var one = 1;
var two = “two”;
console.log(one + two);
// 1two
var two = 2;
console.log(one + two);
// 3
2. 프로토타입 기반 객체지향(Prototypal Object-Oriented)
자바스크립트는 객체지향이지만, 클래스 개념 대신 프로토타입 을 일반적으로 사용한다.(ECMA6 표준에서 Class 문법이 추가되었고, TypeScript에서도 클래스를 사용하고있긴하다)
모든 객체는 함수를 이용해서 생성된다.
function Unit() {} // 함수
var player = new Unit(); // Unit 함수로 생성된 객체 player
var obj = {}; // 자바스크립트 내장 함수 Object를 이용해 생성된 객체 obj
함수 F가 정의되는 순간 두가지 일이 일어난다.
1.함수 F는 Constructor 자격을 얻는다.
-> 따라서 Object를 알수있게 된다.
2.함수 F는 Prototype Object를 얻는다.
-> F로 만들수 있는 객체의 원형, prototype 객체가 자동으로 만들어진다. 해당 객체는 F.prototype으로 접근할 수 있다.
F로 생성되는 새로운 객체(new objects)들은 모두 F의 프로토타입 객체에서 파생되었으며, _proto_ 속성을 통하여 원형 객체에 접근할 수 있다. 새로운 객체들은 자신의 속성에 없는 정보를 조상 객체에서 chaining 형식으로 탐색하고, 만약 못찾는다면 undefined를 반환한다.
이런 프로토타입 체인 구조 떄문에 모든 객체는 Object 프로토타입 객체의 자식들이고, 따라서 Object 객체가 가지고 있는 모든 속성을 사용할 수 있다.(ex-toString 함수)
만약 새로운 객체에 원형에 없는 속성을 할당하려 한다면, 해당 객체는 _proto_ 링크가 연결된 원형객체를 참조하여 새로운 속성을 동적으로 추가하여 할당한다.
[Javascript ] 프로토타입 이해하기(https://medium.com/@bluesh55/javascript-prototype-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0-f8e67c286b67) 블로그를 참조했습니다.
3.프로그램 내부에서 코드 블록을 수행하는 eval()함수를 사용한다.
eval(“console.log(I am good)”);
// I am good
그러나 서버 내부의 정보를 노출시킬 수 있다는 위험성, 에러코드의 삽입을 통한 보안 위험을 유발할 수 있기 때문에 eval()함수는 오남용을 주의해야하는 위험한 코드이다.
4.고차 함수를 사용할 수 있다.
고차함수는 함수의 인자로 함수를 사용하거나, 반환값으로 함수를 사용하는 경우를 일컫는다.
var func = function (param_func) { param_func();};
func(function () { console.log(“Hello World”);});
구름 edu의 node.js 자바스크립트 특징 편을 참조했습니다.
댓글