js中组合使用构造函数模式和原型模式创建对象

 

js中组合构造函数模式和原型模式创建对象是最常见的方法。

构造函数模式用于定义实例属性,原型模式用于定义方法和共享属性。优点如下

①每个实例都会有自己的一份实例属性的副本,又同时共享对方法的引用,最大限度地节省了内存。
②这种混合模式还支持向构造函数传递参数。

function Student(name,age,class){
 this.name = name;
 this.age = age;
 this.class = class;
 this.friends = ["Tom","Lily"];
}

Student.prototype = {
 constructor:Student,
 sayName : function(){
  alert(this.name);
 }
}

var s1 = new Student("xy1",23,"classA");
s1.friends.push("Jerry");

var s2 = new Student("xy2",23,"classB");

alert(s1.friends);
结果"Tom,Lily,Jerry";

alert(s2.friends);
结果"Tom,Lily"

alert(s1.friends == s2.friends);
结果false

alert(s1.sayName == s2.sayName);
结果false

 

这种方式创建对象,是目前使用最广泛,认同度最高的一种方式。甚至可以书是一种默认的模式。

 

 

时间: 2024-12-28 21:56:44

js中组合使用构造函数模式和原型模式创建对象的相关文章

Javascript教程:组合使用构造函数模式和原型模式

文章简介:创建自定义类型的常见方式,就是组合使用构造函数模式与原型模式.构造函数模式用于定义实例属性,而原型模式用于定义方法和共享的属性.结果,每个实例都会有自己的一份实例属性的副本.但同时又共享着对方法的引用,最大限度的节省了内存.另外这种模式还支持向构造函 创建自定义类型的常见方式,就是组合使用构造函数模式与原型模式.构造函数模式用于定义实例属性,而原型模式用于定义方法和共享的属性.结果,每个实例都会有自己的一份实例属性的副本.但同时又共享着对方法的引用,最大限度的节省了内存.另外这种模式还

js面向对象之常见创建对象的几种方式(工厂模式、构造函数模式、原型模式)_javascript技巧

在上篇文章给大家介绍了javascript面向对象基础,本篇文章继续深入学习javascript面向对象,JS的语法非常灵活,简单的对象创建就有好几种不同的方法.这些过于灵活的地方有时候确实很让人迷惑,那么今天我们就来梳理一下JS中常用的创建对象的几种方法吧. 前言 虽然使用 Object构造函数 或者使用 对象字面量 可以很方便的用来创建一个对象,但这种方式有一个明显的缺点:使用一个接口创建多个对象会产生很多冗余的代码.因此为了解决这个问题,人们开始使用以下几种方式来常见对象. 工厂模式 该模

javascript组合使用构造函数模式和原型模式实例

  本文实例讲述了javascript组合使用构造函数模式和原型模式的方法.分享给大家供大家参考.具体如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 function testPrototype2(){ function Person3(name, age, job){ this.name=name; this.age=age; this.job=job; this.friends =["shelb", "

javascript组合使用构造函数模式和原型模式实例_javascript技巧

本文实例讲述了javascript组合使用构造函数模式和原型模式的方法.分享给大家供大家参考.具体如下: function testPrototype2(){ function Person3(name, age, job){ this.name=name; this.age=age; this.job=job; this.friends =["shelb", "court"]; } Person3.prototype = { constructor:Person3

javascript创建对象之函数构造模式和原型模式结合使用(四)

创建自定义类型的常见方式就是组合使用构造函数模式与原型模式一起使用. 构造函数模式用于定义实例对象的特有的部分(属性和方法),原型模式用于定义共享的部分. 这样最大限度的节省了内存的开销. function Human(name, sex) {             this.name = name;             this.sex = sex;             this.getWife=function(){//娶老婆                 if (this.se

JS面向对象基础讲解(工厂模式、构造函数模式、原型模式、混合模式、动态原型模式)_javascript技巧

什么是面向对象?面向对象是一种思想!(废话). 面向对象可以把程序中的关键模块都视为对象,而模块拥有属性及方法.这样我们如果把一些属性及方法封装起来,日后使用将非常方便,也可以避免繁琐重复的工作.接下来将为大家讲解在JS中面向对象的实现.   工厂模式 工厂模式是软件工程领域一种广为人知的设计模式,而由于在ECMAScript中无法创建类,因此用函数封装以特定接口创建对象.其实现方法非常简单,也就是在函数内创建一个对象,给对象赋予属性及方法再将对象返回即可. function createBlo

几句话带你理解JS中的this、闭包、原型链_javascript技巧

原型链 所有对象都是基于Object.prototype,Object.prototype就是JavaScript的根对象,在Object.prototype中定义的方法都可以被其它对象访问到,当然也可以被重写了,所以直接在Object.prototype上调用的是原始功能的toString()方法,该方法会放回参数对象的内置属性[[class]]的值,这个值是个字符串,比如'[Object String]' 要理解原型链机制的话,首先得知道根本原因:JavaScript中的对象都有一个内置属性

常见设计模式解析和实现(C++)Prototype模式(原型模式)

作用:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象. UML结构图:   抽象基类: 1)  Prototype:虚拟基类,所有原型的基类,提供Clone接口函数 接口函数: 1)  Prototype::Clone函数:纯虚函数,根据不同的派生类来实例化创建对象. 解析: Prototype模式其实就是常说的"虚拟构造函数"的一个实现,C++的实现机制中并没有支持这个特性,但是通过不同派生类实现的Clone接口函数可以完成与"虚拟构造函数"同样的

javascript创建对象之原型模式(三)

先上代码: function Human() { }         Human.prototype.name = "成吉思汗";         Human.prototype.sex = "男";         Human.prototype.say = function () {             alert(this.name);         }         var man = new Human();         man.say();