2 실수하기 쉬운 것들 2-1. 객체 확장하기최악의 실수는 Object.prototype을 확장하는 것이다.이 것은 모든 객체가 추가된 프로퍼티를 받는 다는 것을 의미하고, 어떤 객체의 프로퍼티를 순회할 때 새로 추가한 프로퍼티가 같이 순회되어 문제가 될 수 있다.예제 코드(객체에 있는 모든 프로퍼티 이름(key)의 배열을 반환하는 메서드) Object.prototype.keys = function(){ var keys = []; for(var p in this) keys.push(p); return keys; }; var obj = { a : 1, b : 2, c : 3}; console.log(obj.keys().length == 3); // false 코드만 보면 테스트에 성공할 것 같지만, 실패한..
분류 전체보기
객체 지향과 프로토타입 프로토타입은 객체의 타입을 정의하는데 편한게 사용하는 수단이지만 실제로는 함수의 기능이다.자바스크립트에서 프로토타입은 객체의 프로퍼티를 정의하고, 객체의 인스턴스에 자동으로 적용되는 기능을 정의하는 편리한 수단이다. (청사진 역할, java 클래스와 비슷한 역할을 함) 1. 인스턴스 생성과 프로토타입 모든 함수에는 prototype 프로퍼티가 존재(생성자로 사용하지 않으면 필요 없음)1-1. 객체 인스턴스 생성객체 청사진으로서의 프로토타입 function Corn(){}; Corn.prototype.swingSword = function(){ return true; }; var corn1 = Corn(); console.log(corn1 === undefined); var corn..
4.4 가변인자목록 가변인자 목록 자바스크립트가 지닌 유연하고 강력한 기능 중 하나는 함수가 임의 개수의 인자를 받을 수 있다는 것이다. 몇 가지 예제를 통하여 유연한 인자 목록이 제공하는 장점을 알아보자. 임의 개수의 인자를 받는 함수에 여러 개의 인자를 제공하는 방법 함수 오버로딩을 구현하기 위해서 가변인자 목록을 활용하는 방법 인자 목록이 지닌 length 프로퍼티에 대해 이해하고 활용하는 방법 자바스크립트는 함수 오버로딩을 제공하지 않는다. 그렇기 때문에 오버로딩이 제공하는 장점과 유사한 장점을 얻으려면 인자 목록의 유연함이 필요하다. apply() 메서드를 이용해서 가변 길이의 인자를 전달하기 자바스크립트에서는 배열에서 최솟값이나 최댓값을 검색하는 기능이 없다. 유사한 기능으로..
지도학습 지도학습 모델 복잡도와 데이터셋 크기의 관계 모델의 복잡도는 훈련 데이터셋에 담긴 입력 데이터의 다양성과 관련이 깊음 데이터셋에 다양한 데이터 포인트가 많을수록(데이터가 많을 수록) 과대적합 없이 더 복잡한 모델을 만들 수 있음 다양성을 키워주므로 큰 데이터셋은 더 복잡한 모델을 만들 수 있게 해줌 선형모델 => 입력 특성에 대한 선형 함수를 만들어 예측 회귀의 선형 모델 선형모델을 위한 일반화된 예측 함수 y = w[0] * x[0] + w[1] * x[1] ... w[p] * x[p] + b; x[0] ~ x[p] 까지는 데이터 포인트에 대한 특성 w와 b는 모델이 학습할 파라미터 그리고 y은 모델이 만들어낸 예측값 하나라면 y = w[0] * x[0] + b 곧, 예측값은 입력 ..
머신러닝 기초지식 머신러닝 기초지식 머신러닝은 크게 3가지 분야로 나누어 볼 수 있습니다. 지도학습(Supervised Learning), 비지도학습(Unsupervised Learning), 강화학습(Reinforcement Learning) 지도학습과 비지도학습의 궁극적인 목표는 과거, 현재의 데이터로부터 미래를 예측하는 것입니다. 다만, 두 가지의 차이점은 라벨링이된 데이터인지 아닌지에 따라 결정됩니다. 데이터 종류학습 종류 라벨링된 데이터(labeld data)지도학습라벨링되지 않은 데이터(Unlabeled data)비지도학습 여기서 라벨링된 데이터는 데이터에 대한 답이 존재하는 것을 말합니다. Supervised Learning(지도학습) 만일 내가 가진 데이터가 라벨링되어 있다면 지도학습이라고..
1종객체(함수) 가지고 놀기_1자바스크립트에서 함수는 프로퍼티를 가질 수 있고, 메서드를 가질 수 있고, 변수나 프로퍼티에 할당이 가능하며 일반적으로 평범한 객체들이 할 수 있는 것을 모두 할 수 있다.var obj = {};var fn = function(){};=> 변수에 객체를 할당할 수 있듯이, 함수를 할당하는 것도 가능하다. 이 것은 함수를 객체의 프로퍼티에 할당해서 메서드를 만드는 데도 그대로 적용된다. var obj = {};var fn = function(){};obj.prop = “obj’s property”;fn.prop = “Fn’s property”;=> 일반적인 객체와 마찬가지로 함수에도 프로퍼티를 추가할 수 있다.함수 저장하기만약에 연관성을 지닌 함수들을 컬렉션에 저장하고 싶다고..
callee 프로퍼티재귀호출을 처리하는 방법 중 하나로 arguments 매개변수의 callee 프로퍼티라는 함수에 대해 알아보자. (Callee 프로퍼티는 앞으로 자바스크립트에서 제거될 부분이다. ECMAScript5 “strict” 모드에서 callee 프로퍼티 사용을 금지하고 있다.) 123456789101112131415161718 Document var ninja = { attack : function(n){ return n > 1 ? arguments.callee(n-1) + "-sword" : "sword"; } } console.log(ninja.attack(3)); // sword-sword-sword Colored by Color Scriptercsarguments매개변수는 암묵적으로 ..
익명함수 익명함수는 간단히 말해 이름을 가지고 있지 않는 함수이다.익명함수는 함수를 변수에 저장하거나, 어떤 객체의 메서드로 설정하기 위해, 콜백으로 활요하는 것과 같이 나중에 사용하기 위한 함수를 만들때 주로 사용한다. (함수를 참조하기 위한 용도로 함수의 이름을 가지고 있을 필요가 없다.)아래는 사용 예이다. 123456789101112131415161718192021222324 Document window.onload = function(){ console.log("onload!"); // 변수에 저장 } var ninja = { shout : function(){ console.log("shout!!"); // 메서드로 사용 } } setTimeout(function(){ alert("hi!");..
스타일(CSS) 다루기Style 속성 Style 속성은 엘리먼트의 중요한 속성이다. HTML DOM 엘리먼트에는 style 프로퍼티가 있기 때문에 엘리먼트의 스타일과 관련된 정보를 얻으려면 element.style.color와 같은 식으로 프로퍼티를 사용할 수 있다. 하지만 그 엘리먼트에 지정한 원본 style 스타일 문자열 값을 얻고 싶다면 다른 방법이 필요하다. Color:red 라는 원본 문자열을 얻고싶으면 어떻게 할까? IE => element.style.cssText // 테스트결과 다른 브라우저에서도 사용 가능 대부분의 브라우저 => getAttribute(“style”)를 사용한다. 내 스타일은 어디있지?아래 테스트 코드를 살펴보자1234567891011121314151617181920212..
속성(attribute)와 프로퍼티(property)의 차이속성(attribute)DOM을 어떻게 만들어낼 것인가에 대한 필수적인 항목 프로퍼티(property) 런타임 동안 엘리먼트 정보를 저장해두는 주요 수단이자 해당 정보에 어떤 방식으로 접근해야 하는지를 나타냄 DOM 속성과 프로퍼티엘리먼트의 속성 값에 접근할 때, 두 가지 방식이 존재한다. 하나는 전통적인 DOM메서드인 getAttribute와 setAttribute를 사용하는 방법 두번째는 접근하려는 속성과 대응하는 프로퍼티를 사용하는 방법 이다. test라는 변수를 통해 참조하고 있는 엘리먼트의 id값을 얻으려면 다음과 같은 방법을 사용할 수 있다. test.getAttribute(“id”) // 속성으로 얻어옴 test.id // 속성과 대..