>  기사  >  웹 프론트엔드  >  JavaScript 개체, 배열 및 해시 테이블

JavaScript 개체, 배열 및 해시 테이블

高洛峰
高洛峰원래의
2016-11-28 15:13:331751검색

JavaScript에서 객체는 실제로 다음 사용자 객체와 같은 해시 테이블입니다.

function user(n, a)
{
    this.name = n;
    this.age = a;
    this.toString = function() {
        return "Name:" + this.name + ", Age:" + this.age;
    }
}
var u = new user("tom", 18);
for (var k in u) {
    alert('key: ' + k + ', value:' + u[k]);
}

약간 변경하여 객체 대신 배열 객체를 사용합니다.

var user = new Array();
user["name"]="tom";
user["age"]=18;
user["toString"]=function(){
 return "Name:" + this.name + ", Age:" + this.age;
}
alert(user.toString());

Simpler 작성 방법:

var u = {
 "name":"tom",
 "age":18
}
u.toString = function(){return 'Name:' + this.name + ', Age:' + this.age;};
alert(u.toString());

위 코드에서 알 수 있듯이:

Array 객체를 포함한 모든 JavaScript 객체는 실제로 해시 테이블이며 속성 이름은 해시 테이블이며 속성 값은 해시 테이블의 값입니다.

배열 객체는 일반적인 의미에서 배열 객체와 관련이 없습니다. 일반 배열은 첨자를 통해서만 찾을 수 있지만 JavaScript의 배열은 해시 테이블과 같은 키를 통해 컬렉션에 있는 객체를 찾을 수 있습니다.

함수는 개체의 "해시 테이블"에 값으로 직접 할당될 수 있습니다.

프론트엔드 시간에 Ruan Yifeng의 "Data Types and Json Format" 기사를 읽었는데, yaml에서 데이터를 기술할 때 모든 데이터가 세 가지 유형으로 나누어진다고 했습니다.

첫 번째 유형은 단일 단어 "Beijing"과 같은 단일 문자열 또는 숫자인 스칼라입니다.

두 번째 유형은 시퀀스(Sequence)입니다. "Beijing, Tokyo"와 같이 여러 관련 데이터가 배열 또는 목록이라고도 하는 특정 순서로 함께 배열됩니다.

세 번째 유형은 "Capital: Beijing"과 같이 해시 또는 사전이라고도 불리는 키/값 쌍인 맵입니다.

아마도 우리 모두는 이 세 가지 유형에 익숙할 것입니다. 그러나 기사에 언급된 json에 대한 네 가지 규칙은 단지 javascript가 데이터를 설명하는 방식을 분석하는 것입니다.

병렬 데이터 사이에 쉼표 사용(",") 분리.

매핑은 콜론(":")으로 표시됩니다.

병렬 데이터의 집합(배열)은 대괄호("[]")로 표시됩니다.

매핑된 컬렉션(객체)은 중괄호("{}")로 표시됩니다.

이 네 가지 규칙(및 기능에 대한 이해)을 통해 겉보기에 "이상한" 것처럼 보이는 많은 작성 방법을 이해할 수 있습니다. 따라서 JavaScript 개체는 실제로 배열 또는 맵입니다.

배열과 매핑의 차이점에 대해 다음 예를 보면 알 수 있습니다.

var m = {
 name:"keel",
 age:5
}
var a = [m,"sss",3];
//以下请求成功定位到name属性
alert(m["name"]);
alert(a[0]["name"]);//a[0]定位到m
alert(a[0].name);
//以下失败
alert(m[0]);//映射无法以数组下标的方式访问

멤버를 찾는 방법의 관점에서 매핑은 키를 사용하여 멤버를 찾는 반면, 배열은 키를 사용합니다. 다음 첨자를 사용하면 첨자를 사용하여 매핑을 배치할 수 없으며 배열은 키를 사용할 수 없습니다(물론 키가 전혀 없습니다).

표현의 관점에서 매핑은 객체와 유사한 방법을 사용하여 액세스할 수 있습니다. 속성(예: m .name)의 경우 키와 함께 [] 메서드를 사용할 수도 있습니다(예: m["name"]. 이는 JavaScript의 특수한 경우이며 배열처럼 보이지만 실제로는 매핑); 그러나 배열은 아래 첨자만 사용할 수 있습니다.

순서의 관점에서 보면 배열은 순서가 있고 매핑은 순서가 없습니다.


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.