• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >JavaScript > 详解js产生对象的3种基本方式(工厂模式,构造函数模式,原型模式)

详解js产生对象的3种基本方式(工厂模式,构造函数模式,原型模式)

作者:三十亿少女的梦 字体:[增加 减小] 来源:互联网 时间:2017-05-11

三十亿少女的梦通过本文主要向大家介绍了js对象详解,js面向对象详解,node.js开发实战详解,js prototype详解,js指标详解附图等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

1.工厂模式

工厂模式是软件工程领域一种广为人知的设计模式,而由于在ECMAScript中无法创建类,因此用函数封装以特定接口创建对象。其实现方法非常简单,也就是在函数内创建一个对象,给对象赋予属性及方法再将对象返回即可。

function a(name){
 var b = new object();
 b.name = name;
 b.say = function(){
  alert(this.name);
 } 
  return b 
}
</div>

函数内部产生b对象并返回。 

2.构造函数模式

function Person(name, url) { //注意构造函数名第一个字母大写
 this.name = name;
 this.url = url;
 this.alertUrl = alertUrl;
}
 
function alertUrl() {
 alert(this.url);
}
</div>

因为每构造一个对象就会生成一个alertUrl方法,这样太浪费资源空间,所以把alertUrl这个方法写在全局以节省空间,但这样写就违背了面向对象编程的初衷,下面的原型模式就更好一些。

3.原型模式

我们创建的每个函数都有prototype(原型)属性,这个属性是一个指针,指向一个对象,而这个对象的用途是包含可以由特定类型的所有实例共享的属性和方法。使用原型对象的好处就是可以让所有对象实例共享它所包含的属性及方法。

function Person(){ 
}

Person.prototype.name = "bill";
Person.prototype.address = "GuangZhou";
Person.sayName = function (){
  alert(this.name); 
}

var person1 = new Person();
var person2 = new Person();
 
//测试代码
alert(person1.name); // bill
alert(person2.name); // bill
person1.sayName(); //bill
person2.sayName(); //bill

person1.name = "666";

alert(person1.name); // 666
alert(person2.name); // bill
person1.sayName(); //666
person2.sayName(); //bill
</div>

我们创建的每个函数都有prototype(原型)属性,这个属性其实是一个指针,指向一个对象。

当构造一个person对象例如person1之后,它的默认name属性就是bill。如果要改name值的话就要对person1.name操作。这只是改了这个对象的name属性。alert(person1.prototype.name)依然是弹出bill,即原型上的name属性

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 微信小程序 两种为对象属性赋值的方式详解
  • 详解js产生对象的3种基本方式(工厂模式,构造函数模式,原型模式)

相关文章

  • 2017-05-11初探nodeJS
  • 2017-05-11Vue.directive自定义指令的使用详解
  • 2017-11-23ES7之async/await异步方案
  • 2017-05-11Javascript中for循环语句的几种写法总结对比
  • 2017-05-11简单实现bootstrap选项卡效果
  • 2017-05-11深入理解Node.js中的进程管理
  • 2017-05-11JavaScript拖动层Div代码
  • 2017-05-11nodejs+express实现文件上传下载管理网站
  • 2017-05-11jQuery命名空间与闭包用法示例
  • 2017-05-11NodeJS实现客户端js加密

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • JS文件/图片从电脑里面拖拽到浏览器上传文件/图片
    • jQuery插件echarts实现的循环生成图效果示例【附demo源码下载】
    • 使用UrlConnection实现后台模拟http请求的简单实例
    • jquery中each循环的简单回滚操作
    • vue的Virtual Dom实现snabbdom解密
    • bootstrap网格系统使用方法解析
    • ES6下React组件的写法示例代码
    • Jquery获取radio选中的值
    • 微信小程序 数据交互与渲染实例详解
    • 原生js实现类似fullpage的单页/全屏滚动

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有