3. 네이티브_2
3.4.5 네이티브 프로토타입
내장 네이티브 생성자는각자의 prototype 객체를 가진다(Array.prototype 같은)
- prototype 객체에는 해당 객체의 하위 타입별로 고유한 로직이 담겨있다.
내장 네이티브 생성자는각자의 prototype 객체를 가진다(Array.prototype 같은)
원시 문자열을 박싱한 것 까지 포함하여 모든 String 객체는 기본적으로 String.prototype 객체에 정의된 메서드에 접근할 수 있다.
String 객체를 예로들자면 다음과같은 함수들이 있다.
- String.prototype.indexOf()
- String.prototype.charAt()
- String.prototype.substr()
...등등
이중 문자열 값을 변경하는 메소드는 없다.
수정이 일어나면 기존 값으로 부터 새로운 값을 생성한다.
프로토타입 위임 덕분에 모든 문자열이 이 메서드들을 같이 쓸 수 있다.
let a ='abc '
a.indexOf("c") //3
a.toUpperCase() // 'ABC'
a.trim() // 'abc'
각 생성자 프로토타입마다 자신의 타입에 적합산 기능이 구현되어 있다.
- Number.prototype.toFixed()
- Array.prototype.concat()
- Function.prototype.apply() 혹은 call()
등을 사용할 수 있다.
그리고 프로토타입은 해당 객체의 성격을 따라간다 다음을보면
Array.prototype.push([1,2,3])
Array.prototype//(3) [1, 2, 3, constructor: ƒ, concat: ƒ, copyWithin: ƒ, fill: ƒ, find: ƒ, …]
위와같이 프로토타입객체에 푸쉬를 할수도있지만 위와같이 사용하면 안되겠다.
let a =[1,2,3,4,]
a // [1, 2, 3, 4]
let b =Array.prototype.slice.call(a)
b // [1, 2, 3, 4]
위와같이 call을 붙여서 사용하도록한다.
프로토 타입은 디폴트다
변수에 적절한 타입의 값이 할당되지 않은 상태에서 Function.prototype -> 빈함수,
Array.prototype -> 빈배열
은 모두 디폴트 값 이다.
prototype들은 이미 생성되어 내장된 상태이므로 단 한 번만 생성된다.
그리고 이 디폴트를 임의로 변경하여 사용하는 함수를 사용할경우 해당 함수를 호출 할때마다 불필요하게 prototype이 변경되므로 되므로 그만큼 cpu/메모리가 낭비된다.
그러므로 네이티브의 prototype는 절대로 변경하지말고 있는 그대로 사용하길 바란다.
3.5 정리
자바스크립트는 원시 값을 감싸는 객체 래퍼 즉 네이티브 를 제공한다 객체 래퍼에는 타입별로 쓸만한 기능이 구현되어 있다(객체의 성격과 같은 prototype)
"abc"같은 단순 스칼라 원시값이 있을 때 이값의 length프로퍼티나 String.prototype에 정의된 메서드를 호출하면 자바스크립트는 자동으로 원시값을 박싱(해당하는 객체 레퍼로감쌈)하여 피룡한 프로퍼티와 메서드를 쓸 수 있게 도와준다.
Author And Source
이 문제에 관하여(3. 네이티브_2), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://velog.io/@jmyoon8/3.-네이티브2
저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
자바스크립트는 원시 값을 감싸는 객체 래퍼 즉 네이티브 를 제공한다 객체 래퍼에는 타입별로 쓸만한 기능이 구현되어 있다(객체의 성격과 같은 prototype)
"abc"같은 단순 스칼라 원시값이 있을 때 이값의 length프로퍼티나 String.prototype에 정의된 메서드를 호출하면 자바스크립트는 자동으로 원시값을 박싱(해당하는 객체 레퍼로감쌈)하여 피룡한 프로퍼티와 메서드를 쓸 수 있게 도와준다.
Author And Source
이 문제에 관하여(3. 네이티브_2), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@jmyoon8/3.-네이티브2저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)