JavaScript对象的继承

1.对象冒充
对象冒充指的是在子类中使用子类的this冒充父类的this去执行父类的构造函数,从而获得了父类的属性和方法,但是这种方式只能继承父类构造函数中定义的属性和方法,原型上的任何属性和方法对子类都不可见:
        //使用对象冒充实现继承 
        function SuperType() 
    { 
        this.prop = ["prop"]; 
         
        this.method = function(){return "method";}; 
    } 
    SuperType.prototype.protoProp = "proto"; 
     
    function SubType() 
    { 
        //临时方法 
        this.inherit = SuperType; 
        //冒充继承 
        this.inherit(); 
        //删除临时方法 
        delete this.inherit; 
    } 
     
    var sub = new SubType(); 
    alert(sub.prop);                    //property,继承父类属性 
    alert(sub.method());                //method,继承父类方法 
    alert(sub.protoProp);               //undefined,不能继承父类原型的属性 

2.原型链继承
使用原型链可以很方便继承父类的属性和方法,但是若父类的属性是引用类型时可能会存在父类或子类的多个实例的相互影响问题,即某个实例改变了属性,可能对另外的实例可见。
    //原型链继承 
    function SuperType() 
    { 
        this.prop = ["prop"]; 
         
        this.method = function(){return "method";}; 
    } 
    SuperType.prototype.protoProp = "proto"; 
     
    function SubType() 
    { 
    } 
    //使用原型链继承 
    SubType.prototype = new SuperType(); 
     
    var sub = new SubType(); 

时间: 2024-07-28 20:00:22

JavaScript对象的继承的相关文章

JavaScript对象及继承教程之内置对象(1)

一. 类与对象 在 JavaScript 世界里,关于面向对象第一个要澄清的概念就是类.对象都是有类来定义的,通过类来创建对象就是我们所熟悉的实例化.然而,在 JavaScript 中别没有真正的类,对象的定义就是对象自身.而 ECMA-262 干脆把这种妥协的方式称作为对象的调和剂.为了方便理解,我通常把这个发挥类的作用的调和剂称为类. 二. 内置对象 1. Array类 数组在 js 中是非常常用的一种数据结构,由于其灵活性和易用性,合理的使用数组可以帮助我们更好的实现相应的功能. 让我们先

Javascript学习6 - 类、对象、继承

原文:Javascript学习6 - 类.对象.继承     Javasciprt并不像C++一样支持真正的类,也不是用class关键字来定义类.Javascript定义类也是使用function关键字来完成的.     在Javascript中,可以把对象(object)定义为"属性的无序集合",每个属性存放一个原始值.对象或者函数.理解这一点非常重要. ECMAScript定义:对象由特性(attribute)构成,特性可以是原始值,可以是引用值,如果特性存放的是函数,它将被看作对

理解javascript对象继承_javascript技巧

先从一个问题进行研究深入,什么是javascript对象继承? 比如我们有一个"动物"对象的构造函数. function animal() { this.type = '动物'; } 还有一个"猫"对象的构造函数. function cat(name,color) { this.name = name; this.color = color; } 我们知道猫也属于动物,如果这个猫对象想要继承动物对象的属性,我们该怎么做呢? 构造函数绑定 使用构造函数绑定是最简单的方

javascript 中对象的继承〔转贴〕_javascript技巧

1.关于javascript的apply和call函数 prototype.js中用了大量的apply和call函数,不注意会造成理解偏差. 官方解释:应用某一对象的一个方法,用另一个对象替换当前对象. apply与call的区别是第二个参数不同.apply是  数组或者arguments 对象.而call是逗号隔开的任何类型. apply,call方法最让人混淆的地方也是apply,call的特色.但最好不要滥用. 能改变调用函数的对象.如下例,函数中用到this关键字,这时候this代表的是

JavaScript 对象、函数和继承_javascript技巧

1. Javascript中的对象 JavaScript可以说是一个基于对象的编程语言,为什么说是基于对象而不是面向对象,因为JavaScript自身只实现了封装,而没有实现继承和多态.既然他是基于对象的,那么我们就来说说js中的对象.有人说js中所有的都是对象,这句话不完全正确.正确的一方是他强调了对象在js中的重要性,对象在js中无处不在,包括可以构造对象的函数本身也是对象.但是另一方面,js中也有一些简单的数据类型,包括数字.字符串和布尔值.null值和undefined值,而这些不是对象

JavaScript对象创建及继承原理实例解剖_基础知识

对象创建: 当一个函数对象被创建时候,Function构造器产生的函数对象会运行类似这样的代码: 复制代码 代码如下: this.prototype={constructor:this}; 假设函数F F用new方式构造对象时,对象的constructor被设置成这个F.prototype.constructor 如果函数在创建对象前修改了函数的prototype,会影响创建出来对象的construtor属性 如: 复制代码 代码如下: function F(){}; F.prototype={

javascript 对象继承

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head>     <title>4.2 对象继承</titl

Javascript中非函数对象的继承使用说明

另一种则是基于"非函数对象"的继承,不涉及function.它的做法与前一种情况完全不同. 一.什么是"非函数对象"的继承? 比如,现在有一个对象,叫做"中国人".  代码如下 复制代码 var Chinese = { nation:'中国' }; 还有一个对象,叫做"医生". var Doctor ={ career:'医生' } 请问,我怎样才能让"医生"去继承"中国人",也就是说,

JavaScript学习:基础继承机制

javascript|继承 最近因为学校做网站设计,所以一直在ASP上和数据库上大费苦心. 我在前一个阶段是做Java程序设计的.突然接到任务并学习ASP,所以我一直都热忠并善于利用javascript来构架ASP程序. javascript的一个明显的优点就在于它可以定义和持有自己的对象.这一点好象是VBScript所无法比拟的. 有了这一点,可以利用javascript进行更接近于面向对象的程序设计.也许这将使网站开发更有乐趣... 但有个严重的缺点!javascript不支持继承机制.不象