JavaScript的对象和继承

	本文记录一种JavaScript的对象定义和继承的书写方式,也是目前使用比较普遍的一种。

	1、定义对象(混合的构造函数和原型方式)
	
	// 属性在构造函数里定义
	function Person(name, age, sex) {
		this.name = name;
		this.age = age;
		this.sex = sex;
	}

	// 方法在原型里定义
	Person.prototype.hello = function() {
		alert("Hello, my name is " + this.name);
	}

	Person.prototype.say = function(str) {
		alert("This is " + str);
	}

	// 实例
	var p = new Person("Jim", 23, "M");
	p.hello();
	p.say("Car");

	2、继承的实现

	// 定义子类属性
	function Student(name, age, sex, score) {
		Person.call(this, name, age, sex);  // (1) 可看作构造函数,对继承的父类属性并初始化
		this.score = score;
	}

	// 定义子类方法
	Student.prototype = new Person();  // (2) 通过对子类的prototype进行一个父类无参构造函数的赋值,来继承父类的属性和方法,但继承的属性值都为空,需通过(1)进行初始化
	
	Student.prototype.sayScore = function() {
		alert("My score is " + this.score);
	}

	注: 
	a、子类在进行继承父类时,上面的(1)和(2)两步都是必须的。
	b、若子类定义了一个跟父类同名的方法,则无论子类的同名方法参数是否与父类一样,都会覆盖父类的同名方法,子类对象调用时调的是子类的方法。
	c、通过prototype定义方法时,需通过" Object.prototype.methodName = function() {...} "的方式,否则子类无法直接通过方法名调用父类方法。

	// 实例
	var s = new Student("Andy", 22, "F", 100);
	s.hello();
	s.say("Book");
	s.sayScore();

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值