HTTP(HyperText Transfer Protocol)와 HTTPS(HyperText Transfer Protocol Secure)
보안:
HTTP는 암호화되지 않은 데이터를 전송하므로, 중간자 공격(man-in-the-middle attack)과 같은 보안 위협에 취약합니다. HTTPS는 SSL(Secure Sockets Layer) 또는 TLS(Transport Layer Security) 프로토콜을 사용하여 데이터를 암호화하여 보호합니다.
데이터 무결성:
HTTP는 데이터 무결성을 보장하지 않습니다. 따라서, 데이터가 변경될 수 있으며, 이로 인해 정보 유출 및 보안 위협이 발생할 수 있습니다. HTTPS는 암호화 및 데이터 무결성 체크 등의 보안 기능을 제공하여 데이터 무결성을 보호합니다.
인증:
HTTP는 서버의 신원을 확인하지 않으므로, 중간자 공격에 취약합니다. HTTPS는 SSL/TLS 인증서를 사용하여 서버의 신원을 확인하므로, 중간자 공격을 방지할 수 있습니다.
따라서, 보안이 중요한 데이터(예: 개인 정보, 비밀번호 등)를 전송해야하는 경우, HTTPS를 사용하는 것이 좋습니다.
prototype은 자바스크립트에서 모든 함수가 가지는 속성(property) 중 하나입니다. 이 속성은 해당 함수를 생성자로 사용하여 생성한 객체들이 공유할 프로퍼티와 메서드를 정의하는 객체입니다.
객체를 생성할 때, 해당 객체의 프로토타입에 접근할 수 있는 내부 링크인 [[Prototype]]이 설정됩니다. 이 링크를 통해 해당 객체의 프로토타입에 접근할 수 있으며, 이를 이용하여 프로토타입 체인(prototype chain)을 구성할 수 있습니다.
프로토타입은 일반적으로 함수 객체와 연관이 있습니다. 함수 객체를 생성할 때는 자동으로 prototype이라는 속성이 생성되며, 이 속성은 해당 함수를 생성자로 사용하여 객체를 생성할 때 상속됩니다.
프로토타입을 사용하는 방법에는 다음과 같은 것들이 있습니다.
상속: 프로토타입 체인을 통해 상위 객체의 속성과 메서드를 하위 객체에서 상속받을 수 있습니다.
메서드 추가: 프로토타입 객체에 메서드를 추가하여, 해당 객체와 해당 객체의 모든 하위 객체에서 사용할 수 있는 메서드를 정의할 수 있습니다.
속성 추가: 프로토타입 객체에 속성을 추가하여, 해당 객체와 해당 객체의 모든 하위 객체에서 사용할 수 있는 속성을 정의할 수 있습니다.
프로토타입을 사용하여 객체를 생성하려면 다음과 같은 방법을 사용할 수 있습니다.
function Person(name, age) {
this.name = name;
this.age = age;
}
Person.prototype.sayHello = function() {
console.log("Hello, my name is " + this.name);
};
var person1 = new Person("John", 25);
person1.sayHello(); // "Hello, my name is John"
위의 코드에서 Person 함수 객체의 prototype 속성에 sayHello 메서드를 추가하여, person1 객체와 person1 객체의 모든 하위 객체에서 sayHello 메서드를 사용할 수 있습니다.
_proto_
proto는 객체의 내부 프로퍼티 중 하나로, 해당 객체의 프로토타입 객체에 대한 참조를 가지고 있습니다. proto를 사용하여 객체의 프로토타입에 직접 접근할 수 있습니다.
proto는 ECMAScript 표준에서 권장하지 않는 방법이며, 대신 Object.getPrototypeOf() 함수를 사용하여 객체의 프로토타입에 접근하는 것이 권장됩니다.
아래 예제는 proto를 사용하여 객체의 프로토타입에 접근하는 방법을 보여줍니다.
function Person(name, age) {
this.name = name;
this.age = age;
}
Person.prototype.sayHello = function() {
console.log("Hello, my name is " + this.name);
};
var person1 = new Person("John", 25);
console.log(Object.getPrototypeOf(person1) === Person.prototype); // true
위의 코드에서 Object.getPrototypeOf() 함수를 사용하여 person1 객체의 프로토타입에 접근합니다. 이는 person1 객체가 Person 함수 객체를 생성자로 사용하여 생성되었기 때문입니다. Object.getPrototypeOf() 함수를 사용하여 객체의 프로토타입에 접근하는 것이 더 권장되는 방법입니다.
prototype에 대해서 이야기하였는데, proto가 기억이 나지않아서 이야기하지 못해 아쉬웠다. 그래서 완벽하게 하고자 복습한다. Object.getprototypeOf()
ECMAScript가 권장하는 방법이라는 것이 의외였다.