>  기사  >  웹 프론트엔드  >  js 고급 지식 설명

js 고급 지식 설명

小云云
小云云원래의
2018-03-29 17:10:462413검색

이 글은 주로 js에 대한 고급 지식을 공유합니다

상속

상속은 유형 간의 관계입니다.

객체의 '상속':

실제로 객체의 복사본입니다

function extend (parent, child) 
{  for (var key in parent) 
{    if (! child[key] )
{      child[key] = parent[key]    
}  
}}

프로토타입 상속

만 상위 요소의 메소드는 상속될 수 있지만 속성 상속은 의미가 없습니다

//父级元素function Person (name, age, sex)
{  this.name = name;  this.age = age;  
this.sex = sex}Person.prototype.sayHi = function ()
{  console.log('hello' + this.name);}
//子级元素function Student (score) 
{  this.score = score;}
//只能继承方法Student.prototype = new Person;Student.prototype.constructor = Student;var s1 = new Student(100);console.log(s1);

참고:

문제: Student.prototype = new Person 매개변수는 생성자에 설정할 수 없으며 한 번만 실행할 수 있으며 값은

생성자 차용 함수

호출을 사용하여 이것의 속성을 변경할 수 있고 생성자를 빌릴 수 있지만 생성자 메서드를 상속할 수는 없습니다.

//父级元素function Person (name, age, sex)
{  this.name = name;  this.age = age;  this.sex = sex}Person.prototype.sayHi = function ()
{  console.log('hello' + this.name);}
//子级元素function Student (name,age, sex, score) {Person.call(this, name, age, sex);  
this.score = score;}
//只能继承属性var s1 = new Student('na', 20, 'nv' , 100);console.log(s1);

프로토타입 + 생성자

는 프로토타입과 생성자를 결합합니다. 문제가 될 것입니다. 하위 요소의 메소드는 여러 하위 요소에 의해 액세스됩니다.

이 문제를 해결하는 방법은 객체 상속, 즉 복사를 사용하는 것입니다.

function extend (parent, child) 
{  for (var key in parent) 
{    if (! child[key] )
{      child[key] = parent[key]   
 }  }}function Person (name, age, sex)
 {  this.name = name;  this.age = age; 
  this.sex = sex}Person.prototype.sayHi = function ()
  {  console.log('hello' + this.name); }
  //子级元素function Student (name,age, sex, score) 
  {Person.call(this, name, age, sex);  
  this.score = score;}Student.prototype.say = function ()
  {  console.log('hi'); }
  //只能继承属性extend(Person.prototype, Student.prototype);var s1 = new Student('na', 20, 'nv' , 100);console.log(s1);
  //子级元素function Teacher (name,age, sex,salary) {Person.call(this, name, age, sex);  this.salary = salary}extend(Person.prototype, 
  Teacher.prototype);var t = new Teacher('na', 10,'nv', 1000);console.log(t);

함수 발전

함수를 정의하는 방법

1. 함수 선언

function fn() {

}

2. 함수 표현

var fn = function (){

}

3.var fn = new Function('매개변수는 문자열입니다.' );

fn 여기서는 객체가 함수라도

4. 함수 선언과 함수 표현식의 차이점

함수 선언은 승격되어 전후에 호출할 수 있지만, 함수 표현식은 함수 표현식 이후에만 호출할 수 있습니다.

이 시나리오에 적용

1. 생성자에서 This는 호출 개체를 가리킵니다.

2. 일반 함수에서는 this를 가리키고, strict 모드에서는

3을 가리킵니다. 창으로

4. 개체 메서드가 호출되면 호출 메서드의 개체

가 이

1.bind의 지점을 변경합니다.

첫 번째 매개변수는 이

를 가리키는 요소를 가리킵니다.

새 함수를 반환합니다.

2.call

함수를 호출하고 이 Point를

Borrow 생성자

다른 개체의 Borrow 메서드

3.apply

첫 번째 매개변수는 this를 변경한 지점입니다. 두 번째 매개변수는 배열입니다.

관련 권장 사항:

JS 고급 관련 지식

위 내용은 js 고급 지식 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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