js 创建对象 经典模式全面了解


Posted in Javascript onAugust 16, 2016

1. 概述

通过构造函数创建对象, 有时忘记了写new, 这时函数就会返回undefined

可以创建一个函数createXXX, 在内部封装new。

function Student(props){
  this.name = props.name || '匿名';
  this.grade = props.grade || 1;  
}  

Student.prototype.hello = function(){
  alert('Hello, '+ this.name + '!');

}

function createStudent(props){
  return new Student(props || {});
}

注意 , 如果函数没有显示的写明 return xxx; 则返回undefined。

example

利用构造函数定义Cat,并让所有的Cat对象有一个name属性,并共享一个方法say(),返回字符串'Hello, xxx!':

'use strict';

function Cat(name) {
  this.name = name;
}

Cat.prototype.say = function(){
  return ('Hello, ' + this.name + '!');
}

// 测试:
var kitty = new Cat('Kitty');
var doraemon = new Cat('哆啦A梦');
if (kitty && kitty.name === 'Kitty' && kitty.say && typeof kitty.say === 'function' && kitty.say() === 'Hello, Kitty!' && kitty.say === doraemon.say) {
  alert('测试通过!');
} else {
  alert('测试失败!');
}

以上这篇js 创建对象 经典模式全面了解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js从Cookies里面取值的简单实现
Jun 30 Javascript
js交换排序 冒泡排序算法(Javascript版)
Oct 04 Javascript
jQuery中replaceWith()方法用法实例
Dec 25 Javascript
JSONObject使用方法详解
Dec 17 Javascript
Bootstrap教程JS插件弹出框学习笔记分享
May 17 Javascript
微信QQ的二维码登录原理js代码解析
Jun 23 Javascript
BootStrap Progressbar 实现大文件上传的进度条的实例代码
Jun 27 Javascript
学习Angular中作用域需要注意的坑
Aug 17 Javascript
浅谈jQuery双事件多重加载的问题
Oct 05 Javascript
使用ionic切换页面卡顿的解决方法
Dec 16 Javascript
在 Vue 中编写 SVG 图标组件的方法
Feb 24 Javascript
基于canvasJS在PHP中制作动态图表
May 30 Javascript
js 上传文件预览的简单实例
Aug 16 #Javascript
js removeChild 方法深入理解
Aug 16 #Javascript
关于javascript中限定时间内防止按钮重复点击的思路详解
Aug 16 #Javascript
总结Node.js中的一些错误类型
Aug 15 #Javascript
自动化测试读写64位操作系统的注册表
Aug 15 #Javascript
Wireshark基本介绍和学习TCP三次握手
Aug 15 #Javascript
JavaScript中removeChild 方法开发示例代码
Aug 15 #Javascript
You might like
php使用curl检测网页是否被百度收录的示例分享
2014/01/31 PHP
php中使用sftp教程
2015/03/30 PHP
CI框架数据库查询缓存优化的方法
2016/11/21 PHP
php抽象方法和普通方法的区别点总结
2019/10/13 PHP
Javascript学习笔记-详解in运算符
2011/09/13 Javascript
javascript面向对象入门基础详细介绍
2012/09/05 Javascript
jquery插件之信息弹出框showInfoDialog(成功/错误/警告/通知/背景遮罩)
2013/01/09 Javascript
使用js检测浏览器的实现代码
2013/05/14 Javascript
jQuery插件 selectToSelect使用方法
2013/10/02 Javascript
jquery实现图片滚动效果的简单实例
2013/11/23 Javascript
jQuery bt气泡实现悬停显示及移开隐藏功能的方法
2016/07/12 Javascript
Google Maps基础及实例解析
2016/08/06 Javascript
ES6中Class类的静态方法实例小结
2017/10/28 Javascript
vuex的使用及持久化state的方式详解
2018/01/23 Javascript
实现Vue的markdown文档可以在线运行的方法示例
2018/12/11 Javascript
微信小程序 slot踩坑的解决
2019/04/01 Javascript
JavaScript设计模式--简单工厂模式定义与应用案例详解
2020/05/23 Javascript
js+css实现扇形导航效果
2020/08/18 Javascript
解决新建一个vue项目过程中遇到的问题
2020/10/22 Javascript
Python内建数据结构详解
2016/02/03 Python
Python数据结构之双向链表的定义与使用方法示例
2018/01/16 Python
详解Python Qt的窗体开发的基本操作
2019/07/14 Python
Python中IP地址处理IPy模块的方法
2019/08/16 Python
keras模型可视化,层可视化及kernel可视化实例
2020/01/24 Python
python梯度下降算法的实现
2020/02/24 Python
css3强大的动画效果animate使用说明及浏览器兼容介绍
2013/01/09 HTML / CSS
使用Filters滤镜弥补CSS3的跨浏览器问题以及兼容低版本IE
2013/01/23 HTML / CSS
WEB控件可以激发服务端事件,请谈谈服务端事件是怎么发生并解释其原理?自动传回是什么?为什么要使用自动传回?
2012/02/21 面试题
90后毕业生的求职信范文
2013/09/21 职场文书
大学毕业生个人总结
2015/02/28 职场文书
2015年教育实习工作总结
2015/04/24 职场文书
投资合作意向书范本
2015/05/08 职场文书
党员转正意见怎么写
2015/06/03 职场文书
2016年师德师风学习心得体会
2016/01/12 职场文书
vue elementUI批量上传文件
2022/04/26 Vue.js
xhunter1.sys可以删除嘛? win11提示xhunter1.sys驱动不兼容解决办法
2022/09/23 数码科技