JavaScript 创建对象---寄生构造函数模式
寄生构造函数模式
寄生构造函数模式的基本思想是创建一个函数,该函数的作用仅仅是封装创建对象的代码,然后再返回
新创建的对象。但从表面来看,这个函数又很像是典型的构造函数。以例1来进行说明:
例1:
function Person(name,age){
var o=new Object();
o.name=name;
o.age=age;
o.sayName=function(){
alert(this.name);
}
return o;
}
var friend=new Person("Tim",19,"Doctor");
friend.sayName();//Tim
在例1中,Person函数创建了一个新对象,并以相应的属性和方法实例化该对象,然后又返回了这个对象。
除了使用new操作符并把使用的包装函数叫做构造函数之外,这种模式跟工厂模式其实是一模一样的。构
造函数在不返回值的情况下,默认会返回新对象的实例。而通过在构造函数的末尾添加一个return语句,可
以重写调用构造函数返回的值。
注意:关于寄生构造函数模式,其返回的对象与构造函数或者构造函数的原型属性之间没有关系。即
构造函数返回的对象与在构造函数外部创建的对象并没有什么不同。也不能依赖instanceof操作符来确定对象类型。
JavaScript 创建对象---寄生构造函数模式相关推荐
- JavaScript 设计模式之构造函数模式
一.构造函数模式概念解读 1.构造函数模式概念文字解读 构造函数用于创建特定类型的对象--不仅声明了使用的对象,构造函数还可以接受参数以便第一次创建对象的时候设置对象的成员值.你可以自定义自己的构造函 ...
- javascript --- 设计模式之构造函数模式
在JavaScript里,构造函数通常是认为用来实现实例的,JavaScript没有类的概念,但是有特殊的构造函数.通过new关键字来调用定义的否早函数,你可以告诉JavaScript你要创建一个新对 ...
- JavaScript:创建对象(原型模式和构造函数模式)
JavaScript:对象 一.理解对象 var person = {}Object.defineProperty(person,'name',{writable:false,value : 'Nik ...
- JavaScript创建对象的7大模式
在JavaScript中,创建对象有7大模式,分别是工厂模式.构造函数模式.原型模式.组合使用构造函数模式和原型模式.动态原型模式.寄生构造函数模式.稳妥构造函数模式.下面针对这7种模式展开讲解. 工 ...
- Javascript创建对象的几种方式?
javascript 中常见的创建对象的几种方式: 1. 使用Object构造函数创建: 使用Object构造函数来创建一个对象,下面代码创建了一个person对象,并用两种方式打印出了Name的属性 ...
- javascript 创建对象方式
本文主要是对<JavaScript高级程序设计>第六章(面向对象的程序设计)的总结,书上的这章至少看了4遍是有的.该章主要讲对象的创建与继承.其中创建对象和继承方式至少6种,再加上一些方法 ...
- javascript创建对象
虽然Object构造函数或对象字面量都可以用来创建单个对象,但是这些方法有明显的缺点:使用同一个接口创建很多对象,会产生大量重复代码.因此人们开始使用工厂模式. 工厂模式 这种模式抽象了创建具体对象的 ...
- Javascript 创建对象方法的总结
1. 使用Object构造函数来创建一个对象,下面代码创建了一个person对象,并用两种方式打印出了Name的属性值. var person = new Object();person.name=& ...
- js面向对象的程序设计 --- 中篇(创建对象) 之 原型模式
·原型模式 我们创建的每一个函数都由一个prototype(原型)属性,这个属性是一个指针,指向一个对象,而这个对象的用途是包含可以由特定类型的所有 实例共享的属性和方法. 如果按照字面意思来理解,那 ...
最新文章
- c语言头文件中定义inline static相关函数的优劣
- 来体验一把职场人的真实训练,检验你的工程化交付能力!
- 官方翻译不当导致的PowerShell运行失败一例
- 【转载】 C# 中的Async 和 Await 的用法详解
- python基础教程:修改Python列表中元素的几种方法
- 机器学习-分类之多层感知机原理及实战
- 神盾局特工第四季/全集Agents Of SHIELD迅雷下载
- 双亲委派模型与 Flink 的类加载策略
- 从BIM行业看中国工业软件的困境及出路
- 【Deepin Debian 系统安装RPD远程桌面工具Remmina】
- 【场景化解决方案】ERP系统与钉钉实现数据互通
- RAW WAR WAW 数据相关性
- Excel插件:按范围查找,按格式查找,标示相同值
- 彩色rgb图像拆分为rgb三个通道,并重新合并为彩色图像
- 分布式之BASE理论
- 录制视频没有声音怎么回事?很可能忘了勾选这个选项
- 猎聘Q1营收毛利齐增,在线招聘的“春天”要来了么?
- 请求各位大神 只有微信头像和昵称怎么查到微信号
- JAVA计算机毕业设计校园二手书交易平台(附源码、数据库)
- 数字游戏 【规律 + 思维】
热门文章
- 广州Java培训就业薪资好不好?
- DDOS流量清洗,全面防御DDoS攻击
- 无人机入门(一)位置与电机速度控制
- multism中ui和uo应该怎么表示_基于multism的串联型直流稳压电源设计与仿真
- Linux(manjaro)微信web开发者工具
- 计算机网络之物理层-基带传输
- 无线电基础串讲——从数学到电路再到通信,一文理解大学电子信息专业核心思想
- python程序下载是免费的吗_python软件都是免费的吗
- Spire.Office for Java 7.9.9 ---2022-09-30
- 基于MATLAB的无人机遥感数据预处理与农林植被性状估算