> 웹 프론트엔드 > 프런트엔드 Q&A > JavaScript는 객체를 생성할 수 없습니다

JavaScript는 객체를 생성할 수 없습니다

WBOY
풀어 주다: 2022-04-11 10:27:23
원래의
2428명이 탐색했습니다.

JavaScript는 객체를 생성할 수 있습니다. 생성 방법: 1. 객체를 직접 생성하려면 Object를 사용하세요. 구문은 "new Object()"입니다. 2. new 키워드를 사용하여 객체를 생성하면 구문은 "new object name()"입니다. 객체를 생성하는 경우 구문은 "object={property" 이름: 속성 값,...}"입니다.

JavaScript는 객체를 생성할 수 없습니다

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

JavaScript는 객체를 생성할 수 없나요?

JavaScript 객체는 다양한 값을 보유할 수 있는 변수입니다. 이는 관련 값 세트의 컨테이너 역할을 합니다. 예를 들어, 웹사이트 사용자와 은행 계좌의 청구서는 모두 JavaScript 객체가 될 수 있습니다.

JavaScript에서 객체에는 속성과 메서드라는 두 가지 유형의 값이 포함됩니다.

JavaScript 개체를 생성할 때 해당 개체의 이름, 속성 및 메서드를 정의해야 합니다.

JavaScript 객체 생성 방법:

1. Object를 사용하여 객체를 직접 생성합니다

var myObj=new Object();//使用Object类创建一个空的对象
 
myObj.name="wangshihcheng";
 
myObj.age=20;
 
myObj.infor=function(){
 
document.write("名字:"+this.name);//this.的指向问题
 
document.write("年龄:"+this.age);
 
}
 
myObj.infor();//调用创建的对象里面的方法;
로그인 후 복사

2. new 키워드를 사용하여 생성자를 호출하여 객체를 생성합니다.

코드는 다음과 같습니다. :

<script>
    var obj = new Object();
    obj.name = "Kitty";//为对象增加属性
    obj.age = 21;
    obj.showName = function () {//为对象添加方法
        console.log(this.name);
    };
    obj.showAge = function(){
        console.log(this.age);
    };
    obj.showName();
    obj.showAge();
</script>
로그인 후 복사

이 메소드는 new 키워드로 객체를 생성한 후, 동적 언어인 자바스크립트의 특성에 따라 속성과 메소드를 추가하여 객체를 구성합니다. this는 메소드가 호출되는 객체를 나타냅니다.

이 방법의 문제점은 객체를 여러 번 생성해야 하는 경우 코드를 여러 번 반복해야 하므로 코드 재사용에 도움이 되지 않는다는 것입니다.

3. 프로토타입 모드를 사용하여 객체 만들기

JavaScript에서 각 함수에는

Prototype 객체라고 하는 객체를 가리키는 포인터인 프로토타입 속성이 있습니다. 특정 유형. 모든 인스턴스 개체가 공유하는 속성 및 메서드

또한 이 개체에는 개체를 생성하는 생성자 메서드를 가리키는 내장 속성 생성자가 있습니다.

프로토타입 패턴을 사용하면 모든 인스턴스가 공유할 수 있습니다. 프로토타입 객체의 속성과 메소드,

따라서 생성자에서 객체 인스턴스의 정보를 초기에 정의할 필요가 없습니다.

function Student(){
        
 
}
Student.prototype.name="wang";
Student.prototype.sex="man";
Student.prototype.class="5";
Student.prototype.sayName=function(){
    console.log(this.name);
}
 
var s1=new Student();
s1.sayName();//wang
 
var s2=new Student();
s2.sayName();//wang
 
s2.name="shicheng";
s2.sayName();//shicheng
로그인 후 복사

객체의 속성을 읽을 때 검색이 먼저 수행됩니다.

인스턴스에서 이 속성이 인스턴스에서 발견되면 검색이 종료되고 해당 속성의 값이 반환됩니다.

인스턴스에서 발견되지 않으면 계속 확장합니다. 객체의 프로토타입 객체를 검색하고 이 속성이 프로토타입에서 발견되면

그런 다음 프로토타입 객체의 속성에 해당하는 값을 반환합니다. undefine;

따라서 인스턴스 객체 속성이 프로토타입 객체의 속성을 덮어쓰는 것을 볼 수 있습니다.

4. JSON을 사용하여 객체를 생성합니다

// object={속성 이름 1: 속성 값 2: 속성 값 2 ,...}

//JOSN 형식의 속성 이름은 큰따옴표로 묶어야 합니다.

var p={
 
"name":"wangsch",
 
"gender":"man",
 
"age":40,
 
"son":[
 
    {
 
        "name":"son1",
 
        "age":2
 
    },
 
    {
 
    "name":"son2",
 
    "age":5
 
    }
 
],
 
"infor":function(){
 
document.write("父亲的姓名:"+this.name+",父亲的年龄:"+this.age+"<br>");
 
for( var child in this.son ){
 
document.write("儿子的姓名:"+this.son[child].name+",儿子的年龄:"+this.son[child].age+"<br>");
 
                }
 
        }
 
}
 
p.infor();//调用对象p中的infor方法
로그인 후 복사

5. 생성자를 조합하여 사용합니다. 프로토타입 모드로 객체를 생성합니다.

생성자는 인스턴스의 속성과 프로토타입 모드는 메소드와 공유 속성을 정의하는 데 사용됩니다.

function Student(name,sex,grade){
    this.name=name;
    this.sex=sex;
    this.grade=grade;
}
 
Student.prototype.sayName=function(){
    console.log(this.name);
}
 
Student.prototype.school="nongda";
로그인 후 복사

이 혼합 모드는 매개변수를 생성자에 전달하는 것을 지원할 수 있으며 메모리도 크게 절약합니다.

6. 동적 프로토타입 방법을 사용하여 객체를 만듭니다.

코드는 다음과 같습니다.

<script>
    function Person(name,age){
        this.name = name;
        this.age = age;
        this.array = new Array("Kitty","luo");
        //如果Person对象中_initialized 为undefined,表明还没有为Person的原型添加方法
        if(typeof Person._initialized  == "undefined"){
            Person.prototype.showName = function () {
                console.log(this.name);
            };
            Person.prototype.showArray = function () {
                console.log(this.array);
            };
            Person._initialized = true;
        }
    }
  
    var obj1 = new Person("Kitty",21);
    var obj2 = new Person("luo",22);
    obj1.array.push("Wendy");//向obj1的array属性添加一个元素
  
    obj1.showArray();//Kitty,luo,Wendy
    obj1.showName();//Kitty
    obj2.showArray();//Kitty,luo
    obj2.showName();//luo
</script>
로그인 후 복사

이 방법은 생성자/프로토타입 방법과 유사합니다. 생성자에 메서드를 추가하고 생성자 Person에 속성을 추가하면 if 문이 한 번만 성공적으로 실행될 수 있습니다. 실제 응용 프로그램에서는 가장 널리 사용되는 생성자/프로토타입 메서드가 사용됩니다. 동적 프로토타입 메서드도 널리 사용되며 기능적으로 생성자/프로토타입 메서드와 동일합니다. 생성자와 프로토타입 메서드만 사용하지 마세요.

【관련 추천: javascript 비디오 튜토리얼, web front-end

위 내용은 JavaScript는 객체를 생성할 수 없습니다의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿