프로토타입과 프로토타입 체인의 차이점과 사용법을 살펴보세요
JavaScript에서 객체 지향 프로그래밍은 일반적으로 사용되는 프로그래밍 방법입니다. 프로토타입과 프로토타입 체인은 객체 지향 프로그래밍을 수행할 때 중요한 두 가지 개념입니다. 이 기사에서는 프로토타입과 프로토타입 체인의 차이점과 사용 방법을 살펴보고 구체적인 코드 예제를 제공합니다.
프로토타입 및 프로토타입 체인의 기본 개념:
__proto__
속성을 통해 액세스할 수 있는 프로토타입이 있습니다. __proto__
属性来访问。__proto__
属性连接起来的链式结构。当访问一个对象的属性时,如果该对象本身没有该属性,则会沿着原型链向上查找。原型与原型链的区别:
Object.getPrototypeOf(obj)
__proto__
속성을 통해 연결된 일련의 객체로 구성된 체인 구조입니다. 객체의 속성에 접근할 때 객체 자체에 속성이 없으면 프로토타입 체인을 따라 조회됩니다. Object.getPrototypeOf(obj)
를 통해 얻을 수 있습니다. 프로토타입 체인은 각 개체의 프로토타입으로 구성된 개체 간의 연결입니다. 프로토타입 체인을 통해 객체는 프로토타입의 속성과 메서드를 공유할 수 있습니다.
function Person(name) { this.name = name; } Person.prototype.sayHello = function() { console.log('Hello, ' + this.name); }; var person1 = new Person('Alice'); person1.sayHello(); // 输出:Hello, Alice
function Student(name, grade) { Person.call(this, name); // 调用父类构造函数 this.grade = grade; } Student.prototype = Object.create(Person.prototype); // 继承父类原型 Student.prototype.constructor = Student; // 修复构造函数 Student.prototype.study = function() { console.log(this.name + ' is studying in grade ' + this.grade); }; var student1 = new Student('Bob', 5); student1.sayHello(); // 输出:Hello, Bob student1.study(); // 输出:Bob is studying in grade 5
속성 및 메서드 찾기:
console.log(student1.name); // 输出:Bob console.log(student1.__proto__ === Student.prototype); // 输出:true console.log(student1.__proto__.__proto__ === Person.prototype); // 输出:true console.log(student1.__proto__.__proto__.__proto__ === Object.prototype); // 输出:true console.log(student1.hasOwnProperty('name')); // 输出:true console.log(student1.hasOwnProperty('sayHello')); // 输出:false
위 내용은 프로토타입과 프로토타입 체인의 유사점, 차이점, 적용 방법을 분석합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!