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模拟弹出效果代码修正版
Aug 07 Javascript
javaScript call 函数的用法说明
Apr 09 Javascript
Javascript 网页黑白效果实现代码(兼容IE/FF等)
Apr 23 Javascript
jquery实现超简洁的TAB选项卡效果代码
Aug 28 Javascript
Webwork 实现文件上传下载代码详解
Feb 02 Javascript
AngularJS自定义插件实现网站用户引导功能示例
Nov 07 Javascript
最好用的Bootstrap fileinput.js文件上传组件
Dec 12 Javascript
vue项目中api接口管理总结
Apr 20 Javascript
vue+element 模态框表格形式的可编辑表单实现
Jun 07 Javascript
简单了解vue中父子组件如何相互传递值(基础向)
Jul 12 Javascript
vue实现文件上传读取及下载功能
Nov 17 Javascript
js中switch语句的学习笔记
Mar 25 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
MOTOROLA 摩托罗拉 MODEL 66-XI五灯中波收音机
2021/03/02 无线电
php array_map array_multisort 高效处理多维数组排序
2009/06/11 PHP
mysql_num_rows VS COUNT 效率问题分析
2011/04/23 PHP
MySQL连接数超过限制的解决方法
2011/07/17 PHP
PHP Parse Error: syntax error, unexpected $end 错误的解决办法
2012/06/05 PHP
PHP中的日期加减方法示例
2014/08/21 PHP
PHP实现生成数据字典功能示例
2018/05/24 PHP
关于JavaScript的gzip静态压缩方法
2007/01/05 Javascript
jquery $.ajax各个事件执行顺序
2010/10/15 Javascript
Node.js中的模块机制学习笔记
2014/11/04 Javascript
深入理解React中es6创建组件this的方法
2016/08/29 Javascript
javascript代码调试之console.log 用法图文详解
2016/09/30 Javascript
Bootstrap实现导航栏的2种方式
2016/11/28 Javascript
JavaScript中动态向表格添加数据
2017/01/24 Javascript
jQuery插件HighCharts绘制简单2D柱状图效果示例【附demo源码】
2017/03/21 jQuery
vue-vuex中使用commit提交mutation来修改state的方法详解
2018/09/16 Javascript
layui的表单验证支持ajax判断用户名是否重复的实例
2019/09/06 Javascript
如何手写一个简易的 Vuex
2020/10/10 Javascript
Python赋值语句后逗号的作用分析
2015/06/08 Python
Python中Collections模块的Counter容器类使用教程
2016/05/31 Python
解决uWSGI的编码问题详解
2017/03/24 Python
python操作oracle的完整教程分享
2018/01/30 Python
详解Python 解压缩文件
2019/04/09 Python
Pycharm Git 设置方法
2020/09/15 Python
4款Python 类型检查工具,你选择哪个呢?
2020/10/30 Python
浅谈pc和移动端的响应式的使用
2019/01/03 HTML / CSS
美国高档帽子网上商店:Hats.com
2018/08/09 全球购物
.NET remoting中对象激活的两种方式
2015/06/08 面试题
英文版银行求职信
2013/10/09 职场文书
机械制造与自动化应届生求职信
2013/11/16 职场文书
机械设计专业大学生职业生涯规划书范文
2014/09/13 职场文书
家庭贫困证明书(3篇)
2014/09/15 职场文书
2014年党员整改措施范文
2014/09/21 职场文书
2015年环保局工作总结
2015/05/22 职场文书
解除处分决定书
2015/06/25 职场文书
用基于python的appium爬取b站直播消费记录
2021/04/17 Python