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

java script 面向对象--javascript实现继承

 
阅读更多

1、对象冒充

function ClassA(sColor) {
    this.color = sColor;
    this.sayColor = function () {
        alert(this.color);
    };
}
function ClassB(sColor, sName) {
    this.newMethod = ClassA;
    this.newMethod(sColor);
    delete this.newMethod;

    this.name = sName;
    this.sayName = function () {
        alert(this.name);
    };
}
var objA = new ClassA("blue");
var objB = new ClassB("red", "John");
objA.sayColor();	//输出 "blue"
objB.sayColor();	//输出 "red"
objB.sayName();		//输出 "John"

 冒充对象的原理在于this,和方法的实质

缺点:1、只能实现继承使用this定义的专属属性和方法

使用call()和reply方法可以代替

 call:

function ClassB(sColor, sName) {
    //this.newMethod = ClassA;
    //this.newMethod(color);
    //delete this.newMethod;
    ClassA.call(this, sColor);

    this.name = sName;
    this.sayName = function () {
        alert(this.name);
    };
}

apply:

function ClassB(sColor, sName) {
    //this.newMethod = ClassA;
    //this.newMethod(color);
    //delete this.newMethod;
    ClassA.apply(this, arguments);

    this.name = sName;
    this.sayName = function () {
        alert(this.name);
    };
}

 call和apply的区别是apply使用的是参数数组

2、原型链

function ClassA() {
}

ClassA.prototype.color = "blue";
ClassA.prototype.sayColor = function () {
    alert(this.color);
};

function ClassB() {
}

ClassB.prototype = new ClassA();

优点:是可以实现类共享属性和方法的继承。

缺点:是不能实现实例的属性和方法。

3、混合方式

function ClassA(sColor) {
    this.color = sColor;
}

ClassA.prototype.sayColor = function () {
    alert(this.color);
};

function ClassB(sColor, sName) {
    ClassA.call(this, sColor);
    this.name = sName;
}

ClassB.prototype = new ClassA();

ClassB.prototype.sayName = function () {
    alert(this.name);
};

var objA = new ClassA("blue");
var objB = new ClassB("red", "John");
objA.sayColor();	//输出 "blue"
objB.sayColor();	//输出 "red"
objB.sayName();	//输出 "John"

 完美解决上述问题

 

 

分享到:
评论

相关推荐

    java script 继承的实现

    JavaScript 是一种广泛应用于 Web 开发的脚本语言,它的继承机制是其面向对象特性的重要组成部分。在 JavaScript 中,继承主要用于创建类之间的关系,允许子类(派生类)继承父类(基类)的属性和方法,从而实现代码...

    Java Script 经典教程(九)——JavaScript完全网页教程

    理解原型、构造函数和继承机制是实现面向对象编程的关键。 此外,JavaScript还提供了异步编程的能力,如回调函数、Promise和async/await。这使得处理耗时操作(如网络请求)变得更加方便,避免了阻塞主线程导致的...

    JavaScript面向对象编程

    总结,JavaScript的面向对象编程涉及到对象、构造函数、原型、继承、封装、多态以及模块化等多个方面。理解并熟练掌握这些概念,能帮助开发者编写出更高效、更易于维护的代码。通过实践和不断学习,你可以编写出功能...

    Java Script 经典封装

    它的主要特点在于它既支持面向对象编程,也支持函数式编程,同时也具备动态类型和原型继承等特性。在这个“Java Script 经典封装”的主题中,我们将深入探讨JavaScript中的封装概念及其在实际开发中的应用。 封装是...

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

    本文实例为大家介绍了javascript实现继承的6种方式,分享给大家供大家参考,具体内容如下 1、【原型链继承】实现的本质是重写原型对象,代之以一个新类型的实例。实际上不是SubType的原型的constructor属性被重写了...

    Java Script精彩实例教程

    6. **面向对象编程**:JavaScript支持类和原型为基础的面向对象编程,理解构造函数、原型链和继承是深入学习的必备。 7. **ES6新特性**:如箭头函数、模板字符串、let和const、解构赋值、Promise等,这些是近年来...

    第三章 JavaScript和Java语言

    - **面向对象与基于对象**:虽然两者都支持面向对象编程,但 JavaScript 更倾向于基于对象的方式,即通常使用内置对象,而不是定义新的类或实现继承。 - **嵌入方式**:JavaScript 可以直接嵌入 HTML 文件中,而 ...

    Java Script实例教程

    4. 类与模块:引入了面向对象的类概念,以及模块化机制。 5. async/await:简化异步编程,使用Promise处理异步操作。 通过本实例教程,读者将全面了解JavaScript的基础知识,并能实际操作和应用各种特效代码,为...

    Java-Script-Basic-Program

    10. **面向对象编程**:JavaScript支持基于原型的面向对象编程,可以创建构造函数和实例,以及继承和多态的概念。 这个"Java-Script-Basic-Program"压缩包可能包含了对以上知识点的实例演示,通过练习和理解这些...

    java script教学范本

    JavaScript语法基于ECMAScript规范,它支持函数式、面向对象和命令式等多种编程范式,使其具有极高的灵活性和可扩展性。 在教学范本中,你将学到以下关键知识点: 1. **基础语法**:包括变量声明(var, let, const...

    Java Script 经典教程(三)——java script 专业设计

    ES6引入的类(class)语法糖使得面向对象编程更加直观,但其实质仍然是基于原型的继承。理解原型链和原型对象对于深入掌握JavaScript至关重要。 数组是处理多个值的数据结构。JavaScript提供了丰富的数组方法,如`...

    javascript 快速入门教程,javascript面向对象编程

    在 JavaScript 中,构造函数用于创建对象实例,而面向对象的三大特征是封装、继承和多态。 ##### 封装 封装是指隐藏对象的具体实现细节,只暴露必要的接口。 ##### 继承 JavaScript 中的对象可以通过原型链实现...

    java script

    Java是一种静态类型的、编译式的、类基于的、面向对象的语言,而JavaScript则是动态类型、解释执行的、基于原型的语言。 JavaScript的主要应用场景包括: 1. **网页交互**:通过DOM(Document Object Model)操作...

    java-script-probleam-solve

    - **原型链**:JavaScript的对象可以通过原型链继承属性和方法,理解这一点对于掌握面向对象编程至关重要。 - **对象字面量与构造函数**:使用字面量创建对象更简洁,而构造函数适合大规模对象创建和类的模拟。 5...

    探讨javascript是不是面向对象的语言

    尽管它在某些方面与传统的面向对象编程语言(如Java或C++)有所不同,但JavaScript确实具有面向对象的特性,只是实现方式独具一格。下面将详细阐述JavaScript的面向对象特性。 1. **对象和构造器**: JavaScript中...

    javascript面向对象之Javascript 继承

    上几节讲了 JavaScript 面向对象之命名空间 、 javascript 面向对象的JavaScript类 、 JavaScript 面向对象的之私有成员和公开成员 与 Javascript 面向对象之重载,大家可以先看上面的再继续往下看。在JavaScript...

    Javascript简单实现面向对象编程继承实例代码

    总的来说,JavaScript的面向对象特性虽然没有像Java或C++那样严格,但通过原型链、构造函数和`call`/`apply`等机制,依然可以实现强大的面向对象编程。这种灵活性使得JavaScript在Web开发中成为不可或缺的一部分。...

Global site tag (gtag.js) - Google Analytics