1、原型继承(prototype)
<script type="text/javascript">
function Person(name,age){
this.name=name;
this.age=age;
}
Person.prototype.sayHello=function(){
alert("使用原型得到Name:"+this.name);
}
var per=new Person("马小倩",21);
per.sayHello(); //使用原型得到Name:马小倩
function Student(){}
Student.prototype=new Person("洪如彤");
var stu=new Student();
alert(stu.name);//洪如彤
alert(stu.age);//undefined,因为new的时候只传了name
Student.prototype.grade=5;
Student.prototype.intr=function(){
alert(this.grade);
}
stu.intr();//5
</script>
2、call,apply继承
<script type="text/javascript">
function Person(name,age,love){
this.name = name;
this.age = age;
this.love = love;
this.say = function say(){
alert("姓名:"+name+",年龄:"+age+",伴侣:"+love);
}
}
function student(name,age){
Person.call(this,name,age);
}
function teacher(name,love){
Person.apply(this,[name,love]);
// Person.apply(this,arguments);//跟上一句一样效果
}
//call与aplly的区别:call的参数是列表;apply参数是数组(arguments也可以)
var per = new Person("小明",25,"小红");
per.say();//姓名:小明 ,年龄:25,伴侣:小红
var stu = new student("李磊",18);
stu.say();//姓名:李磊 ,年龄:18,伴侣:undefined
var tea = new teacher("高老师","伴侣名字");
tea.say();//姓名:高老师 ,年龄:伴侣名字,伴侣:undefined。说明参数只和位置有关
</script>
3、构造函数继承
<script type="text/javascript">
function Parent(name){
this.name = name;
this.sayParent = function(){
alert("Parent:"+this.name);
}
}
function Child(name,age){
this.tempMethod = Parent;
this.tempMethod(name);
this.age = age;
this.sayChild = function(){
alert("Child:"+this.name+",age:"+this.age);
}
}
var parent = new Parent("大明");
parent.sayParent();//Parent:大明
var child = new Child("小明",25);
child.sayChild();//Child:小明,age:25
child.sayParent();//Parent:小明
</script>
有些代码摘自网上,只做部分修改。第一次写文章是一个好的开端,如果有错或建议,请留言
分享到:
相关推荐
总的来说,`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 中,继承是通过...