构造函数继承

function SuperType(){

this.colors = [1,2,3];

}

function SubType(){

//继承属性

SuperType.call(this);

}

var in1 = new SubType();

in1.colors.push(4);

alert(in1.colors);

var in2 = new SubType();

in2.colors.push(5);

alert(in2.colors);

在子类构造函数中执行超类的函数,则子类的实例中都会有自己的colors属性副本

参数式继承

function SuperType(name){

this.name = name;

}

function SubType(name){

//继承属性

SuperType.call(this,name);

}

var in1 = new SubType("Jack");

alert(in1.name);  //jack

var in2 = new SubType("gogo");

alert(in2.name); //gogo

优点:每个子类实例都有自己的属性副本

缺点:无法复用函数

时间: 2024-09-20 12:27:13

构造函数继承的相关文章

javascript继承,原型继承,借用构造函数继承,混合继承

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getS

javascript 封装 构造函数继承 非构造函数继承

1 封装 把"属性"(property)和"方法"(method),封装成一个对象,甚至要从原型对象生成一个实例对象 1.1 简单封装:var cat1 = {}; // 创建一个空对象 cat1.name = "大毛"; // 按照原型对象的属性赋值 cat1.color = "黄色"; 1.2 构造函数Prototype模式 Javascript规定,每一个构造函数都有一个prototype属性,指向另一个对象.这个对象的

JS继承之借用构造函数继承和组合继承

根据少一点套路,多一点真诚这个原则,继续学习. 借用构造函数继承 在解决原型中包含引用类型值所带来问题的过程中,开发人员开始使用一种叫做借用构造函数(constructor stealing)的技术(有时候也叫做伪造对象或经典继承).这种技术的基本思想相当简单,即在子类型构造函数的内部调用超类型构造函数. 基本模式 function SuperType(){ this.colors = ["red", "blue", "green"]; } fu

js继承之借用构造函数继承

一.原型链的缺点 1.1 单纯的原型链继承最大的一个缺点,在于对原型中引用类型值的误修改. 先看一个例子: //父类:人 function Person () { this.head = '脑袋瓜子'; } //子类:学生,继承了"人"这个类 function Student(studentID) { this.studentID = studentID; } Student.prototype = new Person(); var stu1 = new Student(1001);

Javascript继承2:创建即继承----构造函数继承

//声明父类 function SuperClass(id){ //值类型公有属性 this.id = id; //引用类型公有属性 this.books = ['Html','Css']; } //父类声明原型方法 SuperClass.prototype.showBooks = function(){ console.log(this.books) } //声明子类 function ChildClass(id){ //继承父类 SuperClass.call(this,id) } var

构造函数继承--call,apply

构造函数继承的原理 : 通过改变this指向来实现继承(在子类中使用call或apply的方式调用父类  让父类中的this指向子类new出来的对象) 语法格式: function  子类函数名(参数1,参数2){ 父类函数名.call(this,参数1,参数2);     //注: 实例继承 } function  子类函数名(参数1,参数2){ 父类函数名.apply(this,arguments或者[参数1,参数2,参数3,......]);     //注: 实例继承 } call和ap

39.C#--面对对象构造函数及构造函数继承使用

//一.新建Person类namespace _39.面对对象构造函数及构造函数继承使用{public class Person{//字段.属性.方法.构造函数//字段:存储数据//属性:保护字段,对字段的取值和设值进行限定//方法:描述对象的行为//构造函数:初始化对象(给对象的每个属性依次的赋值)//类中的成员,如果不加访问修饰符,默认都是privateprivate string _name; //字段public string Name //属性{get { return _name;

JavaScript继承-借用构造函数继承

借用构造函数继承是在子类型构造函数的内部调用超类型狗在函数,通过使用apply()和call()方法 function girlFriend(){ this.girls = ['chen','wang','zhu']; } function Person(){ girlFriend.call(this,20); } var wang = new Person(); var zhu = new Person(); wang.girls.push('zhang'); console.log(wang

利用构造函数继承父类型属性

在ES6之前并没有提供extends继承,我们可以通过构造函数+原型对象模拟实现继承,被称为组合继承. 核心原理:通过call()把父类型的this指向子类型的this,这样就可以实现子类型继承父类型的属性. // 借用父构造函数继承属性 function Father(name, age) { // this指向父构造函数对象的实例 this.name = name this.age = age } function Son(name, age) { // this指向子构造函数对象的实例 F

236 子构造函数继承父构造函数中的属性

先定义一个父构造函数 再定义一个子构造函数 子构造函数继承父构造函数的属性(使用call方法) <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <