按构造函数/原型混合
方式写类,即属性挂在this上,方法挂在prototype上。
工具函数extend如下,实现思路见注释
/**
* @param {Function} subCls 子类
* @param {Function} superCls 父类
*/
function extend(subCls,superCls) {
//暂存子类原型
var sbp = subCls.prototype;
//重写子类原型--原型继承
subCls.prototype = new superCls();
//重写后一定要将constructor指回subCls
subCls.prototype.constructor = subCls;
//还原子类原型
for(var atr in sbp) {
subCls.prototype[atr] = sbp[atr];
}
//暂存父类
subCls.supr = superCls;
}
父类,
/**
* 父类Person
*/
function Person(nationality){
this.nationality = nationality;
}
Person.prototype.getNationality = function() {return this.nationality;}
Person.prototype.setNationality = function(n) { this.nationality = n;}
子类,注意子类中要显示的调用父类构造器
function Man(nationality,name) {
Man.supr.call(this,nationality);//调用父类构造器
this.name = name;
}
Man.prototype.getName = function() {return this.name;}
Man.prototype.setName = function(n) {this.name=n;}
执行extend函数,创建Man的实例
extend(Man,Person);
var m = new Man('USA','jack');
console.log(m);
m.setName('lily');
console.log(m.name);
- a.rar (551 Bytes)
- 下载次数: 8
分享到:
相关推荐
通过阅读这篇博文(链接已提供),我们可以学习如何构建自己的继承工具函数,并理解其工作原理。 在JavaScript中,常见的继承模式有原型链继承、构造函数继承、组合继承、寄生继承、原型式继承、委托继承等。这里...
3. **数组和集合**:学习JavaScript中的数组操作,如map、filter、reduce等高阶函数的运用,以及Set和Map等ES6新增集合类型的使用。 4. **函数**:理解闭包、作用域和this的关键概念,学习箭头函数的语法和特性。 5....
7. **原型链与继承**: JavaScript通过原型实现继承,每个对象都有一个`__proto__`属性,指向创建它的构造函数的原型。继承是通过`prototype`对象和`Object.create()`方法实现的。 8. **多态**: 多态是指同一消息...
继承是面向对象的核心特性之一,它允许一个对象(子类)获取另一个对象(父类)的属性和方法。本篇文章将深入探讨JavaScript实现继承的七种常见方式,帮助你更好地理解和运用这一概念。 1. 原型链继承(Prototype ...
在这个主题中,“javascript控件开发之继承关系”主要探讨的是如何利用JavaScript的面向对象特性来构建和组织控件的层次结构,以及如何通过继承来实现代码的复用和模块化。 在JavaScript中,继承是基于原型...
3. **基于原型(Prototype-based)**:JavaScript 使用原型继承,对象可以继承其他对象的属性和方法。 4. **事件驱动(Event-driven)**:JavaScript 可以通过监听和处理用户或系统的事件来实现交互性。 5. **函数...
- 首先,创建一个继承自`QObject`的C++类,暴露槽函数给JavaScript。比如,创建一个`MyBackend`类: ```cpp class MyBackend : public QObject { Q_OBJECT public slots: void handleJsCall(const QString &...
继承是面向对象的核心特性之一,它允许一个对象(子类)从另一个对象(父类)获取属性和方法,从而形成类之间的层次结构。本篇文章将深入探讨JavaScript中实现继承的几种常见方式。 1. 原型链继承 JavaScript的原型...
下面将深入探讨JavaScript继承的特性及其实践应用。 1. 伪类继承: JavaScript 的继承机制不直接实现对象间的继承,而是通过构造函数创建对象,并利用`prototype`属性来实现。当一个函数被创建时,它的`prototype`...
JavaScript是一种面向对象的脚本语言,它的函数特性丰富且灵活,是实现逻辑和业务流程的基石。本文将详细探讨JavaScript函数的特性与应用实践。 首先,JavaScript函数是一种对象,这使得它们拥有对象的所有属性和...
在JavaScript中,面向对象编程是其核心特性之一,而继承和派生则是实现面向对象的重要机制。本资料集合关注的是JavaScript中的继承派生以及与之相关的`apply`和`call`方法。 **继承**是面向对象编程的关键概念,...
这篇文章将深入探讨这三个概念,以及如何实现类的继承。 首先,让我们理解什么是JavaScript中的对象。在JavaScript中,对象是一种数据结构,它可以存储键值对,其中键是字符串,值可以是任何类型的数据。对象可以...
JavaScript中的函数对象调用模式是编程中至关重要的概念,它涉及到函数作为一等公民、作用域、闭包、原型链等多个核心知识点。这篇博客通过深入分析JavaScript中的函数调用模式,帮助开发者更好地理解和掌握这些概念...
通过参数、返回值、作用域、闭包、箭头函数以及模块化,JavaScript函数能够满足各种编程需求,是开发者不可或缺的工具。深入理解和灵活运用这些概念,能帮助你编写出更加高效和易于维护的JavaScript代码。
JavaScript,作为全球最广泛使用的编程语言之一,是创建动态网页和交互式应用程序的关键工具。它是一种轻量级的解释型语言,主要应用于客户端的Web开发。这个资源包涵盖了JavaScript的基本语法、高级语法以及自定义...
总的来说,Prototype.js通过提供`Class.create`和`Object.extend`等工具,使得JavaScript中的继承变得更加易于理解和使用。这种继承机制使得开发者能够创建复杂的对象层次结构,实现了类的概念,并有效地复用了代码...
总结一下,JavaScript中的函数不仅是一种数据类型,还是实现面向对象编程的核心工具。通过原型链,我们可以实现基于原型的继承;通过闭包,我们能够控制作用域和访问变量,提升代码的复用性。理解和掌握这些概念,将...
JavaScript继承的实现方式多样,除了原型链之外,还有如下几种常见方式: 1. **构造函数继承**:通过调用父构造函数来初始化子对象,但不能避免方法重复。 2. **原型链继承**:通过修改子构造函数的原型使其指向父...
原型是JavaScript继承的基础,每个对象都有一个`__proto__`属性,指向其构造函数的原型对象。 六、数组与迭代器 数组是内置的引用类型,可以使用索引访问其元素。`for...of`循环和`Array.prototype.forEach()`等...
这种设计模式在JavaScript中尤其有用,因为它提供了增加功能的灵活性,而无需传统的继承方式。 在给定的示例中,我们看到了几个装饰器函数的用法: 1. **动态添加`onload`监听函数**: 这个例子展示了如何使用...