>웹 프론트엔드 >JS 튜토리얼 >js 프로토타입 및 call() 구문 분석 예

js 프로토타입 및 call() 구문 분석 예

小云云
小云云원래의
2018-02-24 14:21:121425검색

이 글은 주로 js 프로토타입과 call()을 공유합니다. 우리는 모두에게 도움이 되기를 바라며 js 프로토타입과 call()에 대한 간단한 요약을 만들었습니다.

/*
原型也是一个对象
把共有的属性或者方法放在原型中
*/

//Person.prototype 原型
/*Person.prototype = { } 祖先*/
Person.prototype.name = "这是祖先的名称 ";
/*多个属性可以这样定义*/
Person.prototype = {
    age : 20,
    sex :"女",
    constructor : Car
}
/*构造函数*/
function Person(sex){
    this.sex =sex;
}

function Car() {
}

/*子孙类可以继承父类的属性和方法,但是子类对象不能修改父类的对象的属性,只能自己进行操作才可以实现
也就是说person.name= "这是祖先的名称 "
*/
 var person = new Person();
/*constructor是对象的构造函数*/
console.log(person.constructor)


Animal.prototype.name = "这是个动物的类";
function Animal() {

    /*这里可以理解为放对象没有这个属性的时候才会去原型中查找,其中也可以改变原型的指向*/
//    var this ={
//     _proto_ : Animal.prototype
// }
}

var animal = new Animal();

//其中注意一下两种写法
Animal.prototype.name = " 这是另外一个动物的类";   //打印Animal.prototype.name = " 这是另外一个动物的类";这个可以这样理解修改的是属性

Animal.prototype = {
    name : " 这是另外一个动物"
}
// Animal.prototype.name = " 这是个动物的类";

/*创建对象*/
var obj = Object.create(原型);


/*call 和apply的作用*/
function Person1(name, age) {
    /*其中这里的this == object*/
    this.name = name;
    this.age = age;
}

/*这里的Student调用Person1的函数*/
function Student (name, age ,grade) {
    /*Person1.apply(this , [name, age]);*/
    Person1.call(this ,name,age);
    this.grade =grade;
}

var student = new Student('JJJJJ',20,1);


var person1 = new Person1('ZK',100);
var object = {

}
/*call的作用是:改变this的指向*/
Person1.call(object ,'zhe',52);

관련 추천:

JS 프로토타입 상속의 4단계

js 프로토타입 체인에 대한 추천 기사 7개

js 프로토타입 체인 상속에 대한 몇 가지 세부 정보 블로그 카테고리: JavaScript

위 내용은 js 프로토타입 및 call() 구문 분석 예의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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