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 相关文章推荐
cloudgamer出品ImageZoom 图片放大效果
Apr 01 Javascript
jQuery 表单验证扩展代码(二)
Oct 20 Javascript
jquery方法+js一般方法+js面向对象方法实现拖拽效果
Aug 30 Javascript
Jquery多选框互相内容交换的实例代码
Jul 04 Javascript
牛叉的Jquery——Jquery与DOM对象的互相转换及DOM的三种操作
Oct 29 Javascript
几种经典排序算法的JS实现方法
Mar 25 Javascript
JavaScript使用简单正则表达式的数据验证功能示例
Jan 13 Javascript
详解plotly.js 绘图库入门使用教程
Feb 23 Javascript
Vue2.0点击切换类名改变样式的方法
Aug 22 Javascript
如何优雅的在一台vps(云主机)上面部署vue+mongodb+express项目
Jan 20 Javascript
如何使用JS console.log()技巧提高工作效率
Oct 14 Javascript
vue3自定义dialog、modal组件的方法
Jan 04 Vue.js
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异步执行的常用方式详解
2013/06/03 PHP
一个经典的PHP验证码类分享
2014/11/18 PHP
php之static静态属性与静态方法实例分析
2015/07/30 PHP
微信公众平台开发之配置与请求
2015/08/26 PHP
PHP框架Laravel学习心得体会
2015/10/28 PHP
thinkphp5框架API token身份验证功能示例
2019/05/21 PHP
JavaScript中的常见问题解决方法(乱码,IE缓存,代理)
2013/11/28 Javascript
javascript实现控制的多级下拉菜单
2015/07/05 Javascript
jQuery实现form表单基于ajax无刷新提交方法详解
2015/12/08 Javascript
JavaScript提高性能知识点汇总
2016/01/15 Javascript
url传递的参数值中包含&时,url自动截断问题的解决方法
2016/08/02 Javascript
JSON 必知必会 观后记
2016/10/27 Javascript
js获取当前周、上一周、下一周日期
2017/03/19 Javascript
利用PM2部署node.js项目的方法教程
2017/05/10 Javascript
详解VUE中v-bind的基本用法
2017/07/13 Javascript
让你彻底掌握es6 Promise的八段代码
2017/07/26 Javascript
layui 解决form表单点击无反应的问题
2019/10/25 Javascript
Python多线程编程(三):threading.Thread类的重要函数和方法
2015/04/05 Python
基于scrapy实现的简单蜘蛛采集程序
2015/04/17 Python
python实现kMeans算法
2017/12/21 Python
tf.truncated_normal与tf.random_normal的详细用法
2018/03/05 Python
python 对象和json互相转换方法
2018/03/22 Python
python requests更换代理适用于IP频率限制的方法
2019/08/21 Python
详解基于python-django框架的支付宝支付案例
2019/09/23 Python
Mac 使用python3的matplot画图不显示的解决
2019/11/23 Python
泰坦健身器材:Titan Fitness
2018/02/13 全球购物
JD Sports荷兰:英国领先的运动时尚零售商
2020/03/13 全球购物
阿尔卡特(中国)的面试题目
2014/08/20 面试题
本科毕业生专业自荐书范文
2014/02/05 职场文书
公益活动邀请函
2014/02/05 职场文书
购房协议书范本
2014/04/11 职场文书
我的教育故事演讲稿
2014/05/04 职场文书
计算机系统管理员求职信
2014/06/20 职场文书
小学校园广播稿集锦
2014/10/04 职场文书
小学教师工作总结2015
2015/04/07 职场文书
详解JS数组方法
2021/11/20 Javascript