2017. 1. 26.

[JavaScript] 강제로 생성자 함수만들기

강제생성자(new) 만들기

new method, directly


자바스크립트에서는 굳이 함수를 new를 통해 생성자로 만들라고 강요하지 않는다.  따라서 new 키워드 없이 생성자 함수를 사용해도 막을 도리가 없다. 하지만 더글라스 크락포드는 2008년에 new 키워드 없이 생성자함수를 만들면 전역객체에 위험부담이 갈 수도 있다고 말한 바 있다. 그러니까 생성자 함수로 만들겠다면 new키워드를 써주는게 좋다. 이를 위해 new를 사용하도록 강제로 만들 수도 있는데, 다음과 같다.

we can create method without 'new' keyword(prefix) in Javascript. so nobody can block using new method without 'new'. but Crockford discusses about new at about 2008, like this:  If you call a constructor function without the new prefix, instead of creating and initializing a new object, you will be damaging the global object. There is no compile time warning and no runtime warning. This is one of the language’s bad parts.

for this reason, use new prefix as you can. we are able to let using new prefix directly like this:

1
2
3
4
5
function Iamfunction(name, age) {
    if(!(this instanceof Iamfunction)) {
        return new Iamfunction(name, age);
    }
}
cs

this.라는 것은 this가 쓰인 범위에 해당하는 영역의 포인터이다. 그래서 만약 Iamfunction함수가 this라는 영역의 인스턴스, 즉 포함된다면 new키워드를 붙인 자기자신을 반환한다.

'this' is pointer in that dimension. so, if Iamfunction is an instance of 'this', then return that function with new prefix.

댓글 없음:

댓글 쓰기