`
lxs647
  • 浏览: 523227 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

js 中的对象继承

阅读更多

1. 对象冒充:

function Parent(username){

    this.username = username;

 

    this.sayHello = function(){

        alert(this.username);

    }

}

 

function Child(username,password){

    this.method=Parent;

    this.method(username);

    delete this.method;

 

    this.password=password;

 

    this.sayWorld=function(){

        alert(this.password);

    }

}

 

 

 

2.call 方法方式:

 

function test(str1,str2){

    alert(this.name + ", " + str1 + ", " + str2);

}

 

var obj = new Object();

obj.name = "userObject";

 

test.call(obj,"hello","world");

注意:这里的“hello” 和“world” 两个参数分别传递给了test方法中的str1和str2,而obj则是传给了test方法中的this。

 

采用call方法来实现冒充方法的继承:

 

function Parent(username){

    this.username = username;

 

    this.sayHello = function(){

        alert(this.username);

    }

}

 

function Child(username,password){

    Parent.call(this,username); 

 

    this.password=password;

 

    this.sayWorld=function(){

        alert(this.password);

    }

}

 

 

3.apply 方法方式:

function Parent(username){

    this.username = username;

 

    this.sayHello = function(){

        alert(this.username);

    }

}

 

function Child(username,password){

    //Parent.apply(this,[username]);

    Parent.apply(this,new Array(username)); 

 

    this.password=password;

 

    this.sayWorld=function(){

        alert(this.password);

    }

}

 

 

4.原型链方式(无法给构造函数传递参数):

 

function Parent(){}

 

Parent.prototype.hello = "hello";

Parent.prototype.sayHello=function(){

    alert(this.hello);

}

 

function Child(){}

 

Child.prototype = new Parent();

 

Child.prototype.world = "world";

Child.prototype.sayWorld=function(){

    alert(this.world);

}

 

 

5.混合方式:

 

function Parent(hello){

    this.hello = hello;

}

 

Parent.prototype.sayHello=function(){

    alert(this.hello);

}

 

function Child(hello,world){

    Parent.call(this,hello);

    this.world = world;

}

 

Child.prototype = new Parent();

 

Child.prototype.sayWorld=function(){

    alert(this.world);

}

分享到:
评论

相关推荐

    js javascript zInherit 对象 继承

    总的来说,`zInherit`是JavaScript对象继承的一种实现,它利用原型链实现继承关系,使得子类可以继承和扩展父类的属性和方法。理解并熟练掌握这种继承方式,对于深入理解JavaScript的OOP特性以及编写高效的代码至关...

    JavaScript面向对象继承详解

    本文将深入探讨JavaScript中的面向对象继承,这是理解JavaScript OOP的关键部分。 面向对象继承是实现代码复用和模块化的重要机制。在JavaScript中,继承主要通过原型链(Prototype Chain)实现。每个JavaScript...

    Javascript中对象继承的实现小例

    JavaScript对象继承的实现机制是该语言灵活特性的核心部分之一。了解如何在JavaScript中实现对象的继承,可以帮助开发者构建更为丰富和具有层次性的代码结构。接下来,我们将详细探讨文档中提供的JavaScript对象继承...

    js定义类 对象 构造函数,类的继承

    在提供的`ClassDefineAndExtends.js`文件中,可能包含了关于类定义和继承的示例代码。通过分析这个文件,我们可以看到实际应用中的类定义和继承实践,包括如何定义类,如何使用构造函数初始化对象,以及如何通过`...

    js 面向对象实例

    每个JavaScript对象都有一个`__proto__`属性,指向创建该对象的构造函数的原型。原型对象也是一个对象,可以通过`prototype`属性来访问。我们可以在原型上定义方法,这样所有实例都可以访问这些方法: ```...

    JS面向对象经典案例

    原型链是JavaScript中的一种机制,它允许对象继承另一个对象的属性和方法。在JavaScript中,每个对象都有一个原型(prototype),它指向了该对象的父对象。例如,我们可以使用以下代码来获取一个对象的原型: ```...

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

    寄生组合式继承是目前最理想的继承方式,它避免了组合继承中调用两次构造函数的问题。这种继承方法只调用一次超类型构造函数,并且因此只创建一次超类型原型。 优点: - 最有效的一种继承方式,只调用一次超类型...

    Javascript面向对象编程.

    这篇博客文章可能详细讨论了如何在JavaScript中实现面向对象编程。 在JavaScript中,面向对象主要通过以下三种方式实现: 1. **构造函数(Constructor)**:构造函数是一种特殊的函数,用于创建和初始化对象。我们...

    理解js对象继承的N种模式

    本文将深入探讨JavaScript对象继承的三种主要模式:原型链继承、借用构造函数(伪造对象,经典继承)以及组合继承(伪经典继承)。 一、原型链继承 在JavaScript中,每个对象都有一个prototype属性,指向它的构造...

    javaScript面向对象继承方法经典实现.docx

    以下是两种经典的JavaScript面向对象继承方法的详细解释: 1. **基于原型的继承**: 这种方法是JavaScript最基础的继承方式,通过`prototype`属性实现。在提供的代码示例中,首先定义了一个`Pet`对象,它有一个...

    js对象,五种继承 详细讲解

    在JavaScript中,对象的定义和继承是核心概念。本文将深入探讨JavaScript的五种对象定义方法以及五种继承方式。 1. **对象定义方法** - **字面量语法**:最直接的方法是使用花括号`{}`创建对象,如`var obj = {...

    javascript中类和继承(代码示例+prototype.js)

    在JavaScript中,类和继承是面向对象编程的重要概念。JavaScript是一种动态类型的语言,它没有像Java或C++那样的传统类,而是使用函数作为构造器来模拟类的行为,并通过原型链实现继承。本文将深入探讨JavaScript中...

    javascript创建对象、对象继承的有用方式详解_.docx

    本文将深入探讨 JavaScript 中创建对象及对象继承的各种有效策略,特别是如何利用构造函数模式、原型模式以及寄生组合式继承等技术来构建灵活、高效的应用程序。 #### 二、JavaScript 对象与原型 在 JavaScript 中...

    JS封装和继承-入门级

    5. **寄生组合式继承**:结合了寄生式继承和组合继承的优点,是JavaScript中推荐的继承方式,可以在`Javascript面向对象编程(三):非构造函数的继承.docx`中找到更详细的解释。 例如,使用寄生组合式继承: ```...

    浅谈JavaScript对象与继承_.docx

    关于对象继承,JavaScript采用的是原型链机制。每个对象都有一个`__proto__`属性,指向它的原型。当试图访问对象的一个属性时,如果对象本身没有该属性,JavaScript会查找`__proto__`,如果`__proto__`也没有,就会...

    javascript面向对象编程(中文)

    JavaScript有CommonJS(Node.js中)、AMD(RequireJS)和ES6的模块系统,如`import`和`export`关键字,用于组织和管理代码。 9. **类的静态属性和方法**:在JavaScript的类语法中,可以定义静态属性和方法,它们不...

    JavaScript中的类继承

    在JavaScript中,对象可以直接从其他对象继承属性和方法,而不是通过类的实例化。这种继承机制使得JavaScript具有更强的表现力和灵活性,尤其在代码复用和类型安全方面。 类型安全和代码复用是类继承的主要原因。在...

    Javascript面向对象与继承.doc

    在JavaScript中,可以使用`JSON.stringify()`将对象转换为JSON字符串,`JSON.parse()`将JSON字符串解析回JavaScript对象。 ### 其他知识点 - `this`关键字:在函数中,`this`指代调用该函数的对象。在全局作用域或...

    js中ES6继承和ES5继承之间的差别.docx

    在 JavaScript 中,继承是实现对象之间的关系的一种方式。ES5 和 ES6 都提供了继承机制,但是它们之间存在着一些关键的差异。本文将详细介绍 ES5 和 ES6 中继承的实现机制和差异。 ES5 继承 在 ES5 中,继承是通过...

Global site tag (gtag.js) - Google Analytics