`
wanglihu
  • 浏览: 919395 次
  • 性别: Icon_minigender_1
  • 来自: 黑龙江
社区版块
存档分类

javascript继承方式

 
阅读更多
1.对象冒充
引用

function Parent(username){
		this.username = username;
		this.sayHello = function(){
			alert("hello,"+this.username);
		}
	}
	function Child(username,password){
               //三行重要代码
		this.method = Parent;
		this.method(username);
		delete this.method;
		this.password = password;
		this.sayWorld = function(){
			alert("world,"+this.password);
		}
	}

	var parent = new Parent("wlh");
	var child = new Child("wlh_child","111111");
	parent.sayHello();

	child.sayHello();
	child.sayWorld();


2.call方法方式:call方法是Function对象中的一个方法,因此我们定义的每个函数都拥有该方法。可以通过函数名来调用call方法,call方法的第一个参数会被传递给函数中的this,从第二个参数开始,逐个赋值给函数中的参数。
1)call方法使用方式:
引用

function test(str,str2){
		alert(this.name + "," +str + "," +str2);
}
var object = new Object();
object.name = "wlh";
//相当于调用了test函数
test.call(object,"wlhs");//将object赋给了this


结果:
wlh,wlhs,undefined
2)call方法继承
function Parent(username){  
        this.username = username;  
        this.sayHello = function(){  
            alert("hello,"+this.username);  
        }  
    }  
    function Child(username,password){  
		Parent.call(this,username);
		this.password = password;
		this.sayWorld = function(){  
            alert("world,"+this.password);  
        }  
	}
	var parent = new Parent("wlh");  
    var child = new Child("wlh_child","111111");  
    parent.sayHello();  
  
    child.sayHello();  
    child.sayWorld();  

3.apply方法方式
function Parent(username){  
        this.username = username;  
        this.sayHello = function(){  
            alert("hello,"+this.username);  
        }  
    }  
    function Child(username,password){  
		Parent.apply(this,new Array(username));
		this.password = password;
		this.sayWorld = function(){  
            alert("world,"+this.password);  
        }  
	}
	var parent = new Parent("wlh");  
    var child = new Child("wlh_child","111111");  
    parent.sayHello();  
  
    child.sayHello();  
    child.sayWorld();  

4.原型链方式(prototype chain):
function Parent(){
	}

	Parent.prototype.username = "wlh";
	Parent.prototype.getUsername = function(){
		alert(this.username);
	}

	function Child(){
	}

	Child.prototype = new Parent();
	Child.prototype.password = "111111";
	Child.prototype.getPassword = function(){
		alert(this.password);
	}

	var child = new Child();
	child.getUsername();
	child.getPassword();

缺点:无法实现参数的传递
5.混合方式(推荐使用该方式)
	function Parent(username){
		this.username = username;
	}

	Parent.prototype.getUsername = function(){
		alert(this.username);
	}

	function Child(username,password){
		Parent.call(this,username);
		this.password = password;
	}

	Child.prototype = new Parent();
	Child.prototype.getPassword = function(){
		alert(this.password);
	}

	var child = new Child("wlh","111111");
	child.getUsername();
	child.getPassword();
分享到:
评论

相关推荐

    6种JavaScript继承方式及优缺点(小结)

    以下是对6种JavaScript继承方式及其优缺点的详细说明: 1. 原型链继承: - 原理:通过将子类的`prototype`指向父类的实例,实现子类继承父类的属性和方法。 - 优点:可以直接访问父类的属性和方法,实现继承。 -...

    GolderBrother#learn-and-collect#JavaScript继承方式1

    组合继承使用原型链继承,并且利用借调父类的构造函数这两个方法的组合,可以实现一种组合式继承,方法通过父类的原型传给子类,然后子类调用父类的构造函数来获得父类的一

    浅析2种JavaScript继承方式

    JavaScript继承是面向对象编程中一个核心概念,它允许我们创建一个类的实例(对象),该实例除了拥有自身定义的属性和方法外,还能继承其父类的...正确选择和使用JavaScript继承方式,可以大大提高开发效率和代码质量。

    JavaScript继承方式实例

    ### JavaScript继承方式实例详解 #### 引言 在面向对象编程中,继承是一种重要的机制,它允许一个类(子类)继承另一个类(父类)的属性和方法。JavaScript作为一种基于原型的语言,提供了多种实现继承的方式。...

    JavaScript继承

    此外,JavaScript的灵活性允许开发者选择基于类的继承方式,或者利用原型继承的微妙之处,实现更高效的设计。 4.1 为什么需要继承 继承的主要目的是代码复用和降低耦合度。通过继承,可以在已有类的基础上扩展功能...

    JavaScript实现继承的几种方式

    以上就是JavaScript中常见的几种继承方式,每种都有其优缺点。在实际开发中,可以根据项目需求和性能考虑选择合适的方法。随着语言的发展,ES6引入了类(class)的概念,虽然在语法上更像传统的面向对象语言,但其...

    JavaScript学习之三 — JavaScript实现继承的7种方式

    在JavaScript中,选择合适的继承方式取决于具体需求。理解并熟练掌握这些继承方式,能让你在编写代码时更加游刃有余。文章中的`inheritance.html`和`inheritance.js`文件可能包含示例代码,帮助你直观地了解每种继承...

    JavaScript五种继承方式

    JavaScript继承第1种方式:对象冒充;第2种方式:call方法;第3种方式:apply方法;第4种方式:原型链方式;第5种方式:混合方式(推荐)

    JavaScript继承机制研究.pdf

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

    学习javascript面向对象 javascript实现继承的方式

    本文将详细介绍六种实现JavaScript继承的方法。 1. 原型链继承 原型链继承是通过改变子类型的原型对象来实现继承的。子类型构造函数的原型被替换为超类型构造函数的一个实例,这样子类型就可以继承超类型的所有属性...

    详解Javascript继承的实现

    本文将深入探讨JavaScript继承的实现方式,以及其中的问题和解决方案。 首先,我们来看混合方式的实现,这种方式结合了原型链和对象冒充。在JavaScript中,构造函数是用于创建特定类型对象的函数。例如,`Employee`...

    java script 继承的实现

    1. **原型链继承**:这是最基础的继承方式,JavaScript 对象都有一个内部 `[[Prototype]]` 属性,通常通过 `__proto__` 或 `Object.getPrototypeOf` 访问。通过将一个对象设置为另一个对象的原型,子类就可以继承...

    JavaScript继承详解.doc

    JavaScript支持多种继承实现方式,包括以下四种: 1. **构造函数继承**(Constructor Inheritance) 这种方法通过在子构造函数中调用父构造函数来实现继承。例如,`ArrayList01`的构造函数中,`this.base = ...

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

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

    javascript 原生态js类继承实现的方式

    我们还知道,面向对象编程有三个重要的概念 - 封装、继承和多态。 但是在JavaScript的世界中,所有的这一切特性似乎都不存在。 因为JavaScript本身不是面向对象的语言,而是基于对象的语言。

    全面分析JavaScript 继承

    ES5的继承方式 类式继承 //声明父类 function Father(){ this.fatherVal = 'father'; } //为父类添加共有方法 Father.prototype.getFatherValue = function(){ return this.fatherVal; } //声明子类 function ...

Global site tag (gtag.js) - Google Analytics