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 相关文章推荐
JavaScript 计算图片加载数量的代码
Jan 01 Javascript
JavaScript高级程序设计(第3版)学习笔记10 再访js对象
Oct 11 Javascript
Ajax执行顺序流程及回调问题分析
Dec 10 Javascript
js几秒以后倒计时跳转示例
Dec 26 Javascript
jquery插件冲突(jquery.noconflict)解决方法分享
Mar 20 Javascript
js实现图片点击左右轮播
Jul 08 Javascript
基于Bootstrap3表格插件和分页插件实例详解
May 17 Javascript
js中变量的连续赋值(实例讲解)
Jul 08 Javascript
深入理解ES6中let和闭包
Feb 22 Javascript
简单分析js中的this的原理
Aug 31 Javascript
使用js和canvas实现时钟效果
Sep 08 Javascript
使用vue-element-admin框架从后端动态获取菜单功能的实现
Apr 29 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
取得单条网站评论以数组形式进行输出
2014/07/28 PHP
几道坑人的PHP面试题 试试看看你会不会也中招
2014/08/19 PHP
PHP中常用的字符串格式化函数总结
2014/11/19 PHP
Yii实现MySQL多数据库和读写分离实例分析
2014/12/03 PHP
laravel中的fillable和guarded属性详解
2019/10/23 PHP
XRegExp 0.2: Now With Named Capture
2007/11/30 Javascript
有关于JS构造函数的重载和工厂方法
2013/04/07 Javascript
分析Node.js connect ECONNREFUSED错误
2013/04/09 Javascript
JavaScript面对国际化编程时的一些建议
2015/06/24 Javascript
js实现当鼠标移到表格上时显示这一格全部内容的代码
2016/06/12 Javascript
JavaScript ES6的新特性使用新方法定义Class
2016/06/28 Javascript
实用jquery操作表单元素的简单代码
2016/07/04 Javascript
Node.js批量给图片加水印的方法
2016/11/15 Javascript
jQuery插件HighCharts实现的2D堆条状图效果示例【附demo源码下载】
2017/03/14 Javascript
基于input框覆盖掉数字英文的实例讲解
2017/07/21 Javascript
详解vue mint-ui源码解析之loadmore组件
2017/10/11 Javascript
JavaScript中发出HTTP请求最常用的方法
2018/07/12 Javascript
nodejs log4js 使用详解
2019/05/31 NodeJs
react 移动端实现列表左滑删除的示例代码
2019/07/04 Javascript
深入理解Python中变量赋值的问题
2017/01/12 Python
Python退火算法在高次方程的应用
2018/07/26 Python
Python 新建文件夹与复制文件夹内所有内容的方法
2018/10/27 Python
pyqt5 实现多窗口跳转的方法
2019/06/19 Python
浅析Python语言自带的数据结构有哪些
2019/08/27 Python
Python如何优雅获取本机IP方法
2019/11/10 Python
你应该知道的Python3.6、3.7、3.8新特性小结
2020/05/12 Python
pycharm不以pytest方式运行,想要切换回普通模式运行的操作
2020/09/01 Python
全球速卖通巴西站点:Aliexpress巴西
2016/08/24 全球购物
JBL加拿大官方商店:扬声器、耳机等
2020/10/23 全球购物
师范教师大学生职业生涯规划范文
2014/01/05 职场文书
乡镇信息公开实施方案
2014/03/23 职场文书
大二学生自我检讨书
2014/10/23 职场文书
公务员考察材料
2014/12/23 职场文书
大学学生会辞职信
2015/05/13 职场文书
解读MySQL的客户端和服务端协议
2021/05/10 MySQL
苹果发布了MagSafe固件更新,可以不外接电源实现最高7.5W充电
2022/04/21 数码科技