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);
}
分享到:
相关推荐
总的来说,`zInherit`是JavaScript对象继承的一种实现,它利用原型链实现继承关系,使得子类可以继承和扩展父类的属性和方法。理解并熟练掌握这种继承方式,对于深入理解JavaScript的OOP特性以及编写高效的代码至关...
本文将深入探讨JavaScript中的面向对象继承,这是理解JavaScript OOP的关键部分。 面向对象继承是实现代码复用和模块化的重要机制。在JavaScript中,继承主要通过原型链(Prototype Chain)实现。每个JavaScript...
JavaScript对象继承的实现机制是该语言灵活特性的核心部分之一。了解如何在JavaScript中实现对象的继承,可以帮助开发者构建更为丰富和具有层次性的代码结构。接下来,我们将详细探讨文档中提供的JavaScript对象继承...
在提供的`ClassDefineAndExtends.js`文件中,可能包含了关于类定义和继承的示例代码。通过分析这个文件,我们可以看到实际应用中的类定义和继承实践,包括如何定义类,如何使用构造函数初始化对象,以及如何通过`...
每个JavaScript对象都有一个`__proto__`属性,指向创建该对象的构造函数的原型。原型对象也是一个对象,可以通过`prototype`属性来访问。我们可以在原型上定义方法,这样所有实例都可以访问这些方法: ```...
原型链是JavaScript中的一种机制,它允许对象继承另一个对象的属性和方法。在JavaScript中,每个对象都有一个原型(prototype),它指向了该对象的父对象。例如,我们可以使用以下代码来获取一个对象的原型: ```...
寄生组合式继承是目前最理想的继承方式,它避免了组合继承中调用两次构造函数的问题。这种继承方法只调用一次超类型构造函数,并且因此只创建一次超类型原型。 优点: - 最有效的一种继承方式,只调用一次超类型...
这篇博客文章可能详细讨论了如何在JavaScript中实现面向对象编程。 在JavaScript中,面向对象主要通过以下三种方式实现: 1. **构造函数(Constructor)**:构造函数是一种特殊的函数,用于创建和初始化对象。我们...
本文将深入探讨JavaScript对象继承的三种主要模式:原型链继承、借用构造函数(伪造对象,经典继承)以及组合继承(伪经典继承)。 一、原型链继承 在JavaScript中,每个对象都有一个prototype属性,指向它的构造...
以下是两种经典的JavaScript面向对象继承方法的详细解释: 1. **基于原型的继承**: 这种方法是JavaScript最基础的继承方式,通过`prototype`属性实现。在提供的代码示例中,首先定义了一个`Pet`对象,它有一个...
在JavaScript中,对象的定义和继承是核心概念。本文将深入探讨JavaScript的五种对象定义方法以及五种继承方式。 1. **对象定义方法** - **字面量语法**:最直接的方法是使用花括号`{}`创建对象,如`var obj = {...
在JavaScript中,类和继承是面向对象编程的重要概念。JavaScript是一种动态类型的语言,它没有像Java或C++那样的传统类,而是使用函数作为构造器来模拟类的行为,并通过原型链实现继承。本文将深入探讨JavaScript中...
本文将深入探讨 JavaScript 中创建对象及对象继承的各种有效策略,特别是如何利用构造函数模式、原型模式以及寄生组合式继承等技术来构建灵活、高效的应用程序。 #### 二、JavaScript 对象与原型 在 JavaScript 中...
5. **寄生组合式继承**:结合了寄生式继承和组合继承的优点,是JavaScript中推荐的继承方式,可以在`Javascript面向对象编程(三):非构造函数的继承.docx`中找到更详细的解释。 例如,使用寄生组合式继承: ```...
关于对象继承,JavaScript采用的是原型链机制。每个对象都有一个`__proto__`属性,指向它的原型。当试图访问对象的一个属性时,如果对象本身没有该属性,JavaScript会查找`__proto__`,如果`__proto__`也没有,就会...
JavaScript有CommonJS(Node.js中)、AMD(RequireJS)和ES6的模块系统,如`import`和`export`关键字,用于组织和管理代码。 9. **类的静态属性和方法**:在JavaScript的类语法中,可以定义静态属性和方法,它们不...
在JavaScript中,对象可以直接从其他对象继承属性和方法,而不是通过类的实例化。这种继承机制使得JavaScript具有更强的表现力和灵活性,尤其在代码复用和类型安全方面。 类型安全和代码复用是类继承的主要原因。在...
在JavaScript中,可以使用`JSON.stringify()`将对象转换为JSON字符串,`JSON.parse()`将JSON字符串解析回JavaScript对象。 ### 其他知识点 - `this`关键字:在函数中,`this`指代调用该函数的对象。在全局作用域或...
在 JavaScript 中,继承是实现对象之间的关系的一种方式。ES5 和 ES6 都提供了继承机制,但是它们之间存在着一些关键的差异。本文将详细介绍 ES5 和 ES6 中继承的实现机制和差异。 ES5 继承 在 ES5 中,继承是通过...