>웹 프론트엔드 >JS 튜토리얼 >js 상속이란 무엇입니까? Node.js 상속 방법(코드 포함)

js 상속이란 무엇입니까? Node.js 상속 방법(코드 포함)

不言
不言원래의
2018-08-11 10:52:064088검색

이 글의 내용은 js에서 객체를 생성하는 방법에 관한 것입니다. js에서 객체를 생성하는 방법(코드 포함)에는 특정 참고 가치가 있으므로 도움이 필요한 친구가 참고할 수 있기를 바랍니다.

js 상속

상속: 하위 클래스는 상위 클래스의 모든 기능을 사용하고 이러한 기능을 확장할 수 있습니다. 상속과정은 일반에서 특수로 넘어가는 과정이다.

js 클래스 상속

// 父类
var supperClass = function() {
  var id = 1;
  this.name = ['js'];
  this.superVal = function() {
    console.log('supreVal is true');
    console.log(id);
  }
}
// 父类添加共有方法
supperClass.prototype.getSupperVal = function () {
  return this.superVal();
}

// 子类
var subClass = function() {
  this.subVal = function() {
    console.log('this is subVal')
  }
}

// 继承父类
subClass.prototype = new supperClass();

// 子类添加共有方法
subClass.prototype.getsubVal = function() {
  return this.subVal();
}    

var sub = new subClass();

sub.getSupperVal();   //superValue is true
sub.getsubVal();     //this is subValue
console.log(sub.name);
sub.name.push('java');  //["javascript"]

var sub2 = new subClass();
console.log(sub2.name); //  ["js", "java"]

가장 핵심적인 코드 부분은 SubClass.prototype = new SuperClass() ;

js 상속이란 무엇입니까? Node.js 상속 방법(코드 포함)

프로토타입 __proto__을 상위 클래스의 프로토타입 객체로 가리키는 것입니다. 이러한 방식으로 하위 클래스는 상위 클래스의 공개 및 보호 속성과 메서드에 액세스할 수 있으며 동시에 상위 클래스의 비공개 속성과 메서드는 하위 클래스에서 상속되지 않습니다.

단점

위 코드의 마지막 문단처럼 칠판을 두드리면 클래스 상속 방식을 이용하여 상위 클래스의 생성자에 [참조 유형]이 있으면 모두가 공유하게 된다. 따라서 자식 클래스의 인스턴스가 이 참조 유형을 변경하면 다른 하위 클래스의 인스턴스에도 영향을 미칩니다.

js 생성자 상속

공식적으로는 위의 단점 때문에 생성자 상속이 있습니다. 생성자 상속의 핵심 아이디어는 this의 포인터를 직접 변경하는 SuperClass.call(this, id)입니다. through 이에 의해 생성된 속성과 메소드는 서브클래스에 별도로 복사되므로 인스턴스화된 각 서브클래스는 서로 영향을 미치지 않습니다. 하지만 메모리 낭비가 발생합니다

var parentClass = function(name, id) {
  this.name = name;
  this.id = id;
  this.getName = function(){
    console.log(this.name)
  }
}

parentClass.prototype.show = function( ) {
  console.log(this.id)
}

var childClass = function(name, id) {
  parentClass.call(this, name, id); 
}
var subClass = new childClass('zjj', 10);

js 상속이란 무엇입니까? Node.js 상속 방법(코드 포함)

먼저 클래스 상속과 생성자 상속의 장단점을 정리해보겠습니다

= 클래스 상속 생성자 상속
핵심 아이디어 하위 클래스의 프로토타입은 상위 클래스에 의해 인스턴스화된 객체입니다. SuperClass.call(this,id)
Advantages 하위 클래스에 의해 인스턴스화된 객체의 속성과 메서드는 상위 클래스를 가리킵니다. class Prototype 각 인스턴스화된 하위 클래스는 서로 영향을 미치지 않습니다.
단점 서브클래스가 서로 영향을 미칠 수 있습니다. 메모리 낭비

관련 권장 사항:

JS 상속--프로토타입 체인 상속 및 클래스 상속 _기본 지식

여러 js 상속 스타일 공유

js 클래스 상속 및 프로토타입 상속_javascript 기술에 대한 자세한 설명

위 내용은 js 상속이란 무엇입니까? Node.js 상속 방법(코드 포함)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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