`
water84222
  • 浏览: 375084 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

javascript的继承机制

阅读更多

 

转载于:http://www.iteye.com/topic/437567

 

测试javascript的继承机制,首先,要理解什么叫继承:继承主要是指子类拥有父类开放的属性及方法,其实javascript是不包含继承这种机制的,但是在现在这个面向对象充斥着开发人员的开发的时候,难免javascript也要模拟这样的一种写吧,尽量满足大部份开发人员的开发习惯,下面请看javascript是如何实现这些继承体系的。

1.先定义一个父类Person

Js代码   收藏代码
  1. function Person(name, sex) {  
  2.     this.name = name;  
  3.     this.sex = sex;  
  4.     this.move = function() {  
  5.         alert("move");  
  6.     };  
  7. }  


2.对象冒充
可以冒充得到正确结果,其实javascript是这样的,将整个方法替换掉pe,当我们调用this.(name,sex);时相当于在Man里面执行上面的那一段代码,而此时的this已经代表的是Man对象,使Man也具有了name,sex等属性与及move方法。

 

Js代码   收藏代码
  1. function Man(name, sex, address, phone) {  
  2.     this.pe = Person;  
  3.     this.pe(name, sex);  
  4.     delete this.pe;  
  5.     this.address = address;  
  6.     this.phone = phone;  
  7. }  
  8.   
  9. function Woman(name, sex, birthday) {  
  10.     this.pe = Person;  
  11.     this.pe(name, sex);  
  12.     delete this.pe;  
  13.     this.birthday = birthday;  
  14. }  

 

3.call 方法实现继承,call方法里面会将this及Person中的参数传递到调用的方法中,此时的this代表的是Man2对象,当调用到Person的构造方法的时候,调用this.name的时候已经是Man2.name了,这种方法也可以实现继承。

Js代码   收藏代码
  1. function Man2(name, sex, address, phone) {  
  2.     Person.call(this, name, sex);  
  3.     this.address = address;  
  4.     this.phone = phone;  
  5. }  

 

4.apply 方法实现继承,其实apply方法和call方法是一样,只不过apply传递过去的参数要用一个数据包装起来而已。

 

Js代码   收藏代码
  1. function Man3(name, sex, address, phone) {  
  2.     Person.apply(thisnew Array(name, sex));  
  3.     this.address = address;  
  4.     this.phone = phone;  
  5. }  

 

5.若父类中有通过prototype定义的方法或者属性,上述的三种方法无法实现继承。

原型链的缺点是不支持多继承。

原型prototype链如下:

 

Js代码   收藏代码
  1. function Person2() {  
  2.   
  3. }  
  4.   
  5. Person2.prototype.name = "";  
  6. Person2.prototype.sex = "";  
  7. Person2.prototype.move = function() {  
  8.     alert(this.name);  
  9. };  
  10.   
  11. function Man4() {  
  12.   
  13. }  
  14.   
  15. Man4.prototype = new Person2();  

 

5.混合方式,通过混合方式,可以达到最大的重用。
function Person3(name, sex) {
    this.name = name;
    this.sex = sex;
}

Person3.prototype.login = function() {
    alert("prototype constructual");
};

function Man5(name, sex, birthday) {
    Person3.call(this, name, sex);
    this.birthday = birthday;
}

Man5.prototype = new Person3();

Man5.prototype.say = function() {
    alert("say hello!");
};

 

Man5.prototype.say();

Man5.prototype.login();

分享到:
评论

相关推荐

    JavaScript继承机制研究.pdf

    JavaScript继承机制研究 在本文中,我们将深入探讨JavaScript继承机制的实现方式,并对基于原型的继承、构造函数方式继承、组合继承、寄生式继承等继承机制进行了总结归纳和分析。 基于原型的继承 JavaScript是...

    JavaScript继承机制探讨及其应用.pdf

    JavaScript继承机制探讨及其应用 JavaScript是一门弱类型语言,具有函数式编程和面向对象编程的特点。随着近几年JavaScript生态圈的发展和成熟,项目的编码量和复杂度也在呈几何级数增长。JavaScript面向对象编程中...

    Javascript 继承机制的实现

    要用ECMAScript实现继承机制,首先从基类入手。所有开发者定义的类都可作为基类。出于安全原因,本地类和宿主类不能作为基类,这样可以防止公用访问编译过的浏览器级的代码,因为这些代码可以被用于恶意攻击。

    Javascript继承机制详解

    学完了Javascript类和对象的创建之后,现在总结一下Javascript继承机制的实现。Javascript并不像Java那样对继承机制有严格明确的定义,它的实现方式正如它的变量的使用方式那样也是十分宽松的,你可以设计自己的方法...

    Javascript 继承机制实例

    在讨论JavaScript继承机制时,我们首先需要了解继承的概念。继承是面向对象编程中的一个核心概念,它允许一个对象(子对象)获得另一个对象(父对象)的属性和方法。通过继承,可以实现代码复用和创建出具有层级关系...

    javascript继承机制实例详解

    在深入探讨JavaScript继承机制之前,我们需要先了解JavaScript中的继承是如何实现的,以及它与传统面向对象语言如ActionScript3中继承的区别。JavaScript是一种基于原型的语言,这意味着它没有像其他语言中的类和...

    Javascript继承机制的设计思想分享

    ### Javascript继承机制的设计思想分享 #### 1. Javascript继承机制简介 Javascript是一种动态类型、解释执行的脚本语言,它不遵循传统的面向对象编程语言中的"类"和"实例"概念。在传统的面向对象编程语言中,类是...

    JavaScript 继承机制的实现(待续)

    ### JavaScript继承机制详解 #### 一、对象冒充方法实现继承 **原理**: JavaScript中的对象冒充是一种实现继承的方式,其核心思想是利用构造函数内部的`this`关键字指向新创建的对象实例,并通过调用另一个构造...

    阿里巴巴技术文章分享 Javascript继承机制的实现

    阿里巴巴技术文章分享的这篇文章主要讲解了如何在JavaScript中实现继承机制。在JavaScript中,原本并没有直接支持面向对象编程的语言特性,比如class关键字,但在实际开发过程中,需要继承机制来优化代码结构和复用...

    浅析JavaScript实现基于原型对象的“继承”.pdf

    原型对象是JavaScript继承机制的核心。 寄生组合模式 基于原型的继承有一个缺陷,那就是它不能够很好地支持多继承。如果我们想要实现多继承,我们可以使用寄生组合模式。寄生组合模式是通过组合原型对象和构造函数...

    javascript继承之为什么要继承.docx

    JavaScript 中的继承机制是指子类继承父类的属性和方法,使得子类可以拥有父类的所有特征。继承是面向对象编程的基本机制之一,它可以实现代码复用、提高编程效率和增强代码的可维护性。 在 JavaScript 中,继承是...

    JavaScript继承

    与其他面向对象语言相比,JavaScript的继承机制更为复杂。在Java或C++等语言中,继承通常只需要一个关键字,如`extends`,但在JavaScript中,实现继承需要采用一系列技术。 JavaScript使用的是原型式继承,这是它与...

    由浅入深讲解Javascript继承机制与simple-inheritance源码分析

    Javascript语言对继承实现的并不好,需要工程师自己去实现一套完整的继承机制。下面我们由浅入深的系统掌握使用javascript继承的技巧,对javascript继承相关知识感兴趣的朋友一起看看吧

    浅析javascript原型继承机制

    ### 浅析JavaScript原型继承机制 #### 一、引言 JavaScript作为一种动态语言,其对象模型与传统的面向对象编程语言有所不同。在JavaScript中,并没有直接提供类的概念,而是通过原型来实现继承。本文将深入探讨...

Global site tag (gtag.js) - Google Analytics