• js面向对象-继承


    定义父类

    // 原型模式与构造函数组合
    function Person(name,age,job) {
    	// 构造函数模式定义实例属性
    	this.name = name;
    	this.age = age;
    	this.job = job;
    }
    
    Person.prototype = {
    	//原型模式定义方法和共享属性
    	constructor: Person,  //重写原型改变了constructor,修正回来
    	sayName:function() {
    		alert(this.name);
    	},
    	sayJob:function() {
    		alert(this.job);
    	}
    }
    

      定义子类

    // 定义Singer类,并指定job为singer
    function Singer(name,age,song) {
    	Person.call(this,name,age,'singer');
    	this.song = song;
    }
    

      每次调用Singer构造函数都会把Singer的job设置为singer,并增加了一个属性song。

    Singer继承Person

    Singer.prototype = new Person();
    Singer.prototype.constructor = Singer;
    Singer.prototype.saySong = function() {
    	alert(this.song);
    }
    

      第一步把Singer的原型设置为Person的实例对象,第二步修正constructor指向,因为Singer的prototype等于Person,所以它的constructor指向的Person函数,第三步添加了一个Singer对象的方法。

    创建Singer对象

    var TaylorSwift = new Singer('Taylor Swift',22,'Love Story');
    TaylorSwift.saySong();  //"Love Story"
    TaylorSwift.sayJob();  //"singer"
    

      

  • 相关阅读:
    文件操作与函数
    编码格式
    if、while、for快速掌握
    运算符、数据类型、数据结构
    正则表达式
    面向对象--属性
    面向对象--对象的创建
    函数的内置属性
    类型检查
    函数表达式 及 闭包
  • 原文地址:https://www.cnblogs.com/yoomin/p/3932995.html
Copyright © 2020-2023  润新知