>웹 프론트엔드 >JS 튜토리얼 >javascript가 new를 사용하지 않고 객체를 생성할 수 있나요?

javascript가 new를 사용하지 않고 객체를 생성할 수 있나요?

青灯夜游
青灯夜游원래의
2021-06-23 18:29:043406검색

Javascript는 new 연산자를 사용하지 않고 객체를 생성할 수 있습니다. 방법: 1. "var objectName={속성 이름 1: 값 1, 속성 이름 2: 값 2,...};"를 사용합니다. .create(프로토타입 개체, 설명자)" 문입니다.

javascript가 new를 사용하지 않고 객체를 생성할 수 있나요?

이 튜토리얼의 운영 환경: Windows 7 시스템, JavaScript 버전 1.8.5, Dell G3 컴퓨터.

Javascript는 객체 생성에 새로운 방법을 사용하지 않습니다

객체 직접 수량

직접 수량을 사용하면 객체를 빠르게 생성할 수 있으며 가장 효율적이고 간단한 방법이기도 합니다. 구체적인 사용법은 다음과 같습니다.

var objectName = {
    属性名1 : 属性值1,
    属性名2 : 属性值2,
    ...
    属性名n : 属性值n
};

객체 리터럴에서 속성 이름과 속성 값은 콜론으로 구분됩니다. 속성 값은 모든 유형의 데이터일 수 있으며 속성 이름은 JavaScript 식별자 또는 문자열 표현식일 수 있습니다. 속성은 쉼표로 구분되며 마지막 속성 끝에는 쉼표가 필요하지 않습니다.

예제 1

다음 코드는 객체 리터럴을 사용하여 두 객체를 정의합니다.

var o = {  //对象直接量
    a : 1,  //定义属性
    b : true  //定义属性
}
var o1 = {  //对象直接量
    "a" : 1,  //定义属性
    "b" : true  //定义属性
}

예 2

속성 값은 모든 유형의 값일 수 있습니다. 속성 값이 함수인 경우 속성을 메서드라고도 합니다.

var o = {  //对象直接量
    a : function () {  //定义方法
        return 1;
    }
}

예제 3

속성 값이 객체인 경우 중첩된 구조 객체를 디자인할 수 있습니다.

var o = {  //对象直接量
    a : {  //嵌套对象
        b : 1
    }
}

예제 4

속성이 포함되어 있지 않으면 빈 객체를 정의할 수 있습니다.

var o = {}  //定义一个空对象直接量

Object.create 사용

Object.create는 인스턴스 객체를 생성하는 데 사용되는 ECMAScript 5의 새로운 정적 메서드입니다. 이 메소드는 객체의 프로토타입과 객체 속성을 지정할 수 있습니다. 구체적인 사용법은 다음과 같습니다.

Object.create(prototype, descriptors)

매개변수 설명은 다음과 같습니다.

  • prototype: 프로토타입 개체를 지정하는 필수 매개변수이며 null일 수 있습니다.

  • descriptors: 선택적 매개변수, 하나 이상의 속성 설명자를 포함하는 JavaScript 개체입니다. 속성 설명자에는 데이터 속성과 접근자 속성이 포함되어 있으며, 여기서 데이터 속성은 아래에 설명되어 있습니다.

  • value: 속성 값을 지정합니다.

  • writable: 기본값은 false이며, 속성 값을 쓸 수 있는지 여부를 설정합니다.

  • enumerable: 기본값은 false입니다. 속성이 열거 가능한지(for/in) 여부를 설정합니다.

  • configurable: 기본값은 false이며, 속성 특성을 수정하고 속성을 삭제할 수 있는지 여부를 설정합니다.

접근자 기능에는 다음과 같이 간략하게 설명된 두 가지 메서드가 포함되어 있습니다.

  • set(): 속성 값을 설정합니다.

  • get(): 속성 값을 반환합니다.

예제 1

다음 예에서는 Object.create를 사용하여 객체를 정의하고, null을 상속하며, 각각 "large" 및 "round" 속성 값을 갖는 두 개의 열거 가능한 속성 size 및 shape를 포함합니다.

var newObj = Object.create (null, {
    size : {  //属性名
        value : "large",  //属性值
        enumerable : true  //可以枚举
    },
    shape : {  //属性名
        value : "round",  //属性值
        enumerable : true  //可以枚举
    }
});
console.log(newObj.size);  //large
console.log(newObj.shape);  //round
console.log(Object.getPrototypeOf(newObj));  //null

예제 2

다음 예에서는 Object.create를 사용하여 객체 리터럴과 동일한 프로토타입을 가진 객체를 정의합니다.

var obj = Object.create(Object.prototype, {  //继承Obj.prototype原型对象
    x : {
        value : undefined,  //属性值
        writable : true,  //可写
        configurable : true,  //可以配置
        enumerable : true  //可以枚举
    }
});
console.log("obj.prototype = " + Object.getPrototypeOf(obj));  //"obj.prototype =[object, Object]"
Object.getPrototypeOf() 函数可获取原始对象的原型。如果要获取对象的属性描述符,可以使用 Object.getOwnPropertyDescriptor() 函数。

예제 3

다음 예에서는 객체를 정의하고 접근자 속성 b를 사용하여 데이터 속성 a를 읽고 씁니다.

var obj = Object.create(Object.prototype, {
    a : {  //数据属性a
        writable : true,
        value : "a"
    },
    b : {  //访问器属性b
        get : function () {
            return this.a;
        },
        set : function (value) {
            this.a = value;
        },
    }
});
console.log(obj.a);  //"a"
console.log(obj.b);  //"a"
obj.b = 20;
console.log(obj.b);  //20

【관련 추천: 자바스크립트 학습 튜토리얼

위 내용은 javascript가 new를 사용하지 않고 객체를 생성할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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