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

 

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

 

 

目录
相关文章
|
6月前
|
设计模式 JavaScript 前端开发
在JavaScript中,继承是一个重要的概念,它允许我们基于现有的类(或构造函数)创建新的类
【6月更文挑战第15天】JavaScript继承促进代码复用与扩展,创建类层次结构,但过深的继承链导致复杂性增加,紧密耦合增加维护成本,单继承限制灵活性,方法覆盖可能隐藏父类功能,且可能影响性能。设计时需谨慎权衡并考虑使用组合等替代方案。
47 7
|
5月前
|
设计模式 JavaScript 前端开发
js设计模式【详解】—— 构造函数模式
js设计模式【详解】—— 构造函数模式
46 6
|
7月前
|
设计模式 JavaScript 前端开发
JavaScript原型模式:实现对象共享属性和方法!
JavaScript原型模式:实现对象共享属性和方法!
|
7月前
|
JavaScript 前端开发
JavaScript构造函数模式:创建对象的另一种方式!
JavaScript构造函数模式:创建对象的另一种方式!
|
设计模式 JavaScript
“工厂、构造、原型” 设计模式与 JS 继承
“工厂、构造、原型” 设计模式与 JS 继承
|
JavaScript 前端开发
【JS精粹】原型链继承和构造函数继承的 “毛病”
先从面向对象讲起,本瓜认为:面向对象编程,它的最大能力就是:复用! 咱常说,面向对象三大特点,封装、继承、多态。
|
JavaScript 前端开发
js对象的创建对象模式和继承模式(下)---继承模式
js对象的创建对象模式和继承模式(下)---继承模式
100 0
|
JavaScript 测试技术 API
JS基础-函数、对象和原型、原型链的关系
JS的原型、原型链一直是比较难理解的内容,不少初学者甚至有一定经验的老鸟都不一定能完全说清楚,更多的"很可能"是一知半解,而这部分内容又是JS的核心内容,想要技术进阶的话肯定不能对这个概念一知半解,碰到问题靠“猜”,却不理解它的规则! prototype 只有函数有prototype属性 let a = {} let b = function () { } console.log(a.prototype) // undefined console.log(b.prototype) // { constructor: function(){...} } Object.prototype怎么解释?
94 0
JS基础-函数、对象和原型、原型链的关系
|
JavaScript
一个实例看懂JS四种创建对象方式的区别
本文目录 1. 概述 2. 功能相同 3. 结构不同 4. 小结
243 0
一个实例看懂JS四种创建对象方式的区别
|
JavaScript 前端开发 Java
JavaScript创建对象(四)——组合使用构造函数和原型模式
在JavaScript创建对象(三)——原型模式中,我们阐述了原型模式存在的两个问题:一是没办法通过构造函数初始化对象属性,二是共享引用类型的数据导致数据错乱。
1076 0