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 刷新全集常用代码
Nov 22 Javascript
阻止子元素继承父元素事件具体思路及实现
May 02 Javascript
jquery 延迟执行实例介绍
Aug 20 Javascript
jquery等宽输出文字插件使用介绍
Sep 18 Javascript
学习使用jquery iScroll.js移动端滚动条插件
Mar 24 Javascript
JavaScript中this的四个绑定规则总结
Sep 26 Javascript
JS实现上传图片的三种方法并实现预览图片功能
Jul 14 Javascript
JavaScript中递归实现的方法及其区别
Sep 12 Javascript
vue中本地静态图片路径写法
Mar 06 Javascript
详解JavaScript匿名函数和闭包
Jul 10 Javascript
JavaScript实现通讯录功能
Dec 27 Javascript
node.js通过Sequelize 连接MySQL的方法
Dec 28 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 应用容器化以及部署方法
2018/02/12 PHP
关于javascript function对象那些迷惑分析
2011/10/24 Javascript
jQuery.validate 常用方法及需要注意的问题
2013/03/20 Javascript
Nodejs为什么选择javascript为载体语言
2015/01/13 NodeJs
javascript封装的sqlite操作类实例
2015/07/17 Javascript
每天一篇javascript学习小结(面向对象编程)
2015/11/20 Javascript
Bootstrap框架动态生成Web页面文章内目录的方法
2016/05/12 Javascript
提高Web性能的前端优化技巧总结
2017/02/27 Javascript
详解node中创建服务进程
2017/05/09 Javascript
JS实现简单拖拽效果
2017/06/21 Javascript
基于jQuery实现的单行公告活动轮播效果
2017/08/23 jQuery
vue移动端项目缓存问题实践记录
2018/10/29 Javascript
详解vue中this.$emit()的返回值是什么
2019/04/07 Javascript
封装Vue Element的table表格组件的示例详解
2020/08/19 Javascript
MySQL中表的复制以及大型数据表的备份教程
2015/11/25 Python
Python基于列表模拟堆栈和队列功能示例
2018/01/05 Python
python画一个玫瑰和一个爱心
2020/08/18 Python
对python指数、幂数拟合curve_fit详解
2018/12/29 Python
深入浅析python 协程与go协程的区别
2019/05/09 Python
Django ModelForm组件使用方法详解
2019/07/23 Python
pywinauto自动化操作记事本
2019/08/26 Python
django-rest-swagger的优化使用方法
2019/08/29 Python
python使用多线程编写tcp客户端程序
2019/09/02 Python
Numpy之将矩阵拉成向量的实例
2019/11/30 Python
下载与当前Chrome对应的chromedriver.exe(用于python+selenium)
2020/01/14 Python
手把手教你如何用Pycharm2020.1.1配置远程连接的详细步骤
2020/08/07 Python
CSS3实现同时执行倾斜和旋转的动画效果
2016/10/27 HTML / CSS
加拿大时尚潮流大码女装购物网站:Addition Elle
2018/04/02 全球购物
微软美国官方网站:Microsoft美国
2018/05/10 全球购物
吉力贝官方网站:Jelly Belly
2019/03/11 全球购物
老师的检讨书
2014/02/23 职场文书
云南省召开党的群众路线教育实践活动总结会议新闻稿
2014/10/21 职场文书
乡镇保密工作承诺书
2015/05/04 职场文书
党支部意见范文
2015/06/02 职场文书
Nginx下SSL证书安装部署步骤介绍
2021/12/06 Servers
Java异常体系非正常停止和分类
2022/06/14 Java/Android