常见模式:
1、工厂模式
使用简单的函数创建对象,为对象添加属性和方法,然后返回对象。这个模式后来被构造函数模式所取代。
function createPerson(name, age, job){ var o = new Object(); o.name = name; o.age = age; o.job = job; o.getName = function(){ alert(this.name); }; return o; } var person = new createPerson("heicx", 28, "programmer");
2、构造函数模式
可以创建自定义引用类型,可以像创建内置对象实例一样使用new操作符。不过,构造函数也有缺点,即它的每个成员都无法得到复用,包括函数。由于函数可以不局限于任何对象,因此没有理由不在多个对象间共享函数。
function Person(name, age, job){ this.name = name; this.age = age; this.job = job; this.getName = function(){ alert(this.name); } } var person = new Person("heicx", 28, "programmer");
3、原型模式
使用构造函数的prototype属性来指定那些应该共享的属性与方法。组合使用构造函数模式和原型模式时,使用构造函数定义实例属性,而使用原型定义共享的属性和方法。
function Person(){} Person.prototype.name = "heicx"; Person.prototype.age = 28; Person.prototype.job = "programmer"; Person.prototype.getName = function(){ alert(this.name); } var person1 = new Person(); person1.getName(); // "heicx"---来自原型 var person2 = new Person(); person2.name = "jobs"; person2.getName(); // "jobs"---来自实例 delete person2.name; person2.getName(); // "heicx"---来自原型
Javascript对象的继承:
Javascript主要通过原型链实现继承。原型链的构建时通过将一个类型的实例赋值给另一个构造函数的原型实现的。这样,子类型就能够访问超类型的所有属性和方法,这一点与基于类的继承很相似。原型链的问题时对象实例共享所有的属性和方法,因此不适宜单独使用。解决这个问题的技术是'借用构造函数',即在子类型构造函数的内部调用超类型构造函数。这样就可以做到每个实例都具有自己的属性,同时还能保证只使用构造函数模式来定义类型。使用最多的继承模式是最合继承,这种模式使用原型链继承共享的属性和方法,而通过调用'借用构造函数'继承实例属性。
1、原型式继承,可以在不必预先定义构造函数的情况下继承,其本质就是执行给定对象的浅复制。而复制得到的副本还可以得到进一步改造。
2、寄生式继承,与原型式继承非常类似,也是基于某个对象或某些信息创建一个对象,然后增强对象,最后返回对象。对了解决组合继承模式由于多次调用超类型构造函数而导致的低效率问题,可以将这个模式与组合继承一起使用。
3,寄生组合式继承,集寄生式继承和组合继承的优点与一身,是实现基于类型构造的最有效方式。
相关推荐
这两本书——"JavaScript 面向对象编程.pdf"和"JavaScript 设计模式与开发实践.pdf"将深入探讨这些主题。 面向对象编程在JavaScript中主要体现在三个方面:封装、继承和多态。封装是指将数据和操作数据的方法捆绑在...
本文将深入探讨 JavaScript 中创建对象及对象继承的各种有效策略,特别是如何利用构造函数模式、原型模式以及寄生组合式继承等技术来构建灵活、高效的应用程序。 #### 二、JavaScript 对象与原型 在 JavaScript 中...
在JavaScript中,还有其他一些与继承相关的概念,如`call`和`apply`方法,它们可以改变函数调用时的上下文,从而实现方法的借用。`bind`方法则可以固定函数的`this`值,创建一个新的函数。 另外,`Object.create`...
JavaScript作为一门浏览器语言的核心思想;面向对象编程的基础知识及其在... 《JavaScript面向对象编程指南》着重介绍JavaScript在面向对象方面的特性,展示如何构建强健的、可维护的、功能强大的应用程序及程序库
《JavaScript面向对象编程指南》内容包括:JavaScript作为一门浏览器语言的..., 《JavaScript面向对象编程指南》着重介绍JavaScript在面向对象方面的特性,展示如何构建强健的、可维护的、功能强大的应用程序及程序库。
此外,张容铭的这本书很可能还会深入讨论JavaScript语言特性如何与设计模式相结合,例如原型继承、闭包和动态类型等在实现设计模式时的独特作用。书中可能会有丰富的实例和代码示例,帮助读者理解和实践这些模式。 ...
7. 继承模式:浅谈原型链继承、寄生组合继承、原型式继承等常见的JavaScript继承模式。 8. 多态实践:通过函数重载、鸭子类型等方式实现多态性。 9. 静态方法与静态属性:类中定义的静态方法和属性,不依附于实例...
- **第七章:混合式编程**:介绍如何结合面向对象编程与其他编程范式(如函数式编程)来构建复杂的系统。 #### 五、读者对象及学习目标 本书适合有一定JavaScript基础的开发者阅读。通过本书的学习,读者可以深入...
JavaScript是一种广泛应用于Web开发的脚本语言,它虽然支持面向对象编程,但其面向对象的实现方式与其他传统面向对象语言(如Java或C++)有所不同。JavaScript中的面向对象特性主要体现在以下几个方面: 1. **基于...
- 构造函数用于创建具有特定模式的对象,通常与`new`关键字一起使用。例如,我们可以定义一个`Person`构造函数来创建多个具有相同属性和方法的对象。 ```javascript function Person(name, age) { this.name = ...
总而言之,学习现代JavaScript面向对象编程,有助于开发者在认识这门语言演化的基础上,运用面向对象的设计和编程模式来构建更加健壮和可维护的JavaScript应用程序。同时,测试和调试是保证代码质量不可或缺的环节,...
- JavaScript与传统面向对象语言的区别 - 原型链 - 构造函数 - 类与继承 - 静态属性与方法 3. **设计模式** - 单例模式 - 工厂模式 - 抽象工厂模式 - 建造者模式 - 适配器模式 - 装饰器模式 - 代理模式...
在这个"JavaScript高级与设计模式"的主题中,我们将深入探讨JavaScript的高级特性以及如何在实践中应用设计模式。 首先,让我们关注JavaScript的高级特性。这些特性包括但不限于: 1. **闭包(Closures)**:闭包...
Zakas撰写,全面介绍了JavaScript作为一种动态语言如何支持面向对象编程模式,并探讨了在实际开发中应用这些模式的最佳实践。 #### 二、面向对象编程基础 面向对象编程(OOP)是一种编程范式,其核心思想是将数据...
除此之外,书中还涵盖了**迭代器模式**、**适配器模式**、**策略模式**等,这些模式在实际项目中都有广泛应用,能帮助开发者构建更加灵活和可维护的JavaScript代码。 总而言之,《精通JavaScript设计模式》一书全面...
该书深入浅出地介绍了面向对象编程在JavaScript中的应用,为读者提供了丰富的设计模式实例和实践经验,帮助开发者更好地理解和掌握JavaScript的设计原则。 #### 二、面向对象编程(OOP)基础 本书首先介绍了面向...