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 相关文章推荐
flash 得到自身url参数的代码
Nov 15 Javascript
在JS数组特定索引处指定位置插入元素
Jul 27 Javascript
jQuery AjaxUpload 上传图片代码
Feb 02 Javascript
Treegrid的动态加载实例代码
Apr 29 Javascript
JS实现动画兼容性的transition和transform实例分析
Dec 13 Javascript
js仿百度音乐全选操作
Jan 13 Javascript
基于JavaScript实现本地图片预览
Feb 08 Javascript
Angular-Ui-Router+ocLazyLoad动态加载脚本示例
Mar 02 Javascript
解决html-jquery/js引用外部图片时遇到看不了或出现403的问题
Sep 22 jQuery
Webpack 之 babel-loader文件预处理器详解
Mar 23 Javascript
vuejs项目打包之后的首屏加载优化及打包之后出现的问题
Apr 01 Javascript
Element的el-tree控件后台数据结构的生成以及方法的抽取
Mar 05 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中的日期处理方法集锦
2007/01/02 PHP
php数组函数序列之ksort()对数组的元素键名进行升序排序,保持索引关系
2011/11/02 PHP
PHP生成plist数据的方法
2015/06/16 PHP
mac系统下安装多个php并自由切换的方法详解
2017/04/21 PHP
js弹出的对话窗口永远保持居中显示
2012/12/15 Javascript
JavaScript中如何通过arguments对象实现对象的重载
2014/05/12 Javascript
jquery结婚电子请柬特效源码分享
2015/08/21 Javascript
JavaScript动态创建div等元素实例讲解
2016/01/06 Javascript
ES6生成器用法实例分析
2017/04/10 Javascript
Vue.js自定义事件的表单输入组件方法
2018/03/08 Javascript
vue awesome swiper异步加载数据出现的bug问题
2018/07/03 Javascript
Vue弹出菜单功能的实现代码
2018/09/12 Javascript
vue中格式化时间过滤器代码实例
2019/04/17 Javascript
一文快速了解JQuery中的AJAX
2019/05/31 jQuery
JS中实现浅拷贝和深拷贝的代码详解
2019/06/05 Javascript
webpack自动打包和热更新的实现方法
2019/06/24 Javascript
js实现div色块碰撞
2020/01/16 Javascript
原生js实现拖拽移动与缩放效果
2020/08/24 Javascript
Chrome插件开发系列一:弹窗终结者开发实战
2020/10/02 Javascript
Python实现批量将word转html并将html内容发布至网站的方法
2015/07/14 Python
python抓取网页中图片并保存到本地
2015/12/01 Python
Tornado协程在python2.7如何返回值(实现方法)
2017/06/22 Python
OpenCV HSV颜色识别及HSV基本颜色分量范围
2019/03/22 Python
解决Python中导入自己写的类,被划红线,但不影响执行的问题
2020/07/13 Python
html5默认气泡修改的代码详解
2020/03/13 HTML / CSS
ORLY官网:美国专业美甲一线品牌
2019/12/11 全球购物
关于.NET, HTML的五个问题
2012/08/29 面试题
师范生的个人求职信范文
2014/01/04 职场文书
法学个人求职信范文
2014/01/27 职场文书
共产党员公开承诺书范文
2014/03/28 职场文书
迟到检讨书范文
2015/01/27 职场文书
新教师教学工作总结
2015/08/14 职场文书
vue引入Excel表格插件的方法
2021/04/28 Vue.js
python使用PySimpleGUI设置进度条及控件使用
2021/06/10 Python
springboot @ConfigurationProperties和@PropertySource的区别
2021/06/11 Java/Android
Nginx进程调度问题详解
2021/09/25 Servers