任性,新建对象不用new
先看最简单的一个例子:
window.meng = window.meng || {};
(function () { /**
*
* @param {Number}width
* @param {Number}height
* @param {String}color
* @constructor
*/
function CreateDiv(width, height, color) {
this.oWidth = width;
this.oHeight = height;
this.oColor = color;
} CreateDiv.prototype.render = function () {
var div = document.createElement("div");
div.style.width = this.oWidth + "px";
div.style.height = this.oHeight + "px";
div.style.backgroundColor = this.oColor;
return div;
};
meng.CreateDiv = CreateDiv;
})();
(function () { var div=new meng.CreateDiv(100,100,"red");
document.body.appendChild(div.render());
})();
上面是一个简单在页面添加div的例子。
当去掉new,的时候在运行会出现
但是我经常忘记,写new,又懒得去改,所以马虎人有马虎人的方法。
“轮子代码”这样改写
window.meng = window.meng || {};
(function () { /**
*
* @param {Number}width
* @param {Number}height
* @param {String}color
* @constructor
*/
function CreateDiv(width, height, color) {
this.oWidth = width;
this.oHeight = height;
this.oColor = color;
if (!(this instanceof CreateDiv)) {
return new CreateDiv(width, height, color);
}
} CreateDiv.prototype.render = function () {
var div = document.createElement("div");
div.style.width = this.oWidth + "px";
div.style.height = this.oHeight + "px";
div.style.backgroundColor = this.oColor;
return div;
};
meng.CreateDiv = CreateDiv;
})();
就会发现不报错了。。╮(╯▽╰)╭
任性,新建对象不用new的更多相关文章
- 是否用new来新建对象
class A{ }: 1.不使用new来新建对象 A a: 使用完后什么也不用做,系统自动调用析构函数.使用空间是栈. 2.使用new来新建对象 A* a=new A(); delete a;/ ...
- js--使用构造器函数来新建对象及操作
通过new操作符来调用函数,来达到访问对象this值得目的,构造器将其创建的对象返回给我们. 直接上代码 //创建构造器函数 function Gadget(name, color){ this.na ...
- 读经典——《CLR via C#》(Jeffrey Richter著) 笔记_new新建对象
CLR使用 new 操作符来创建新对象,例如:Employee e=new Employee("Param1"); 以下是 new 操作符所做的事情. 它计算类型及其所有基类型 ...
- oracle新建对象 权限管理
代码 CREATE USER target IDENTIFIED BY target ; GRANT CONNECT, RESOURCE TO target; 刚刚创建的oracle实例中会内建两个用 ...
- java跳过构造方法新建对象
Java有四种创建对象的方法: (1) 用new语句创建对象,这是最常见的创建对象的方法. (2) 运用反射手段,调用java.lang.Class或者java.lang.reflect.Constr ...
- 通过type类型 新建对象
Activator根System命名空间中的类非常强大. 将参数传递给构造函数等有很多重载.查看以下文档: http://msdn.microsoft.com/en-us/library/system ...
- Session每次访问都回新建对象问题的处理
写了一个测试Session的类,在同一个会话中的两个Servlet中通过Session进行域值传递,但是每次都回传递失败, 而返回的sessionID每次刷新都回不一样,之后通过sendRedirec ...
- Ajax 新建对象
XMLHttpRequest对象是Ajax的基础,用于后台与服务器进行数据交互. 新的浏览器支撑XMLHttpRequest,而旧的浏览器不支持. var vari; if(window.XMLHtt ...
- JEECG新建用户不用系统用户表的实现
首先新增组织机构 和 角色: -- 新增 组织机构 INSERT INTO `t_s_depart` VALUES ('dept001', '你所在的机构', '你所在的机构的描述', null, ' ...
随机推荐
- windows api线程
一.1.定义入口函数static void threadFunc(void);//在TestDlg.h里面声明 void CTestDlg::threadFunc(void) //在TestDlg. ...
- Cheatsheet: 2014 05.01 ~ 05.31
Web Choosing a Web Framework/Language Combo for the Next Decade Optimizing NGINX and PHP-fpm for hig ...
- Have You Ever Wondered About the Difference Between NOT NULL and DEFAULT?
https://blog.jooq.org/2014/11/11/have-you-ever-wondered-about-the-difference-between-not-null-and-de ...
- Java EE 在网页输出九九乘法表、三角形、菱形
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...
- windows c dll的创建与调用
DLL代码: // TestDynamic.cpp: implementation of the TestDynamic class. // ///////////////////////////// ...
- Nessus基本命令
/etc/init.d/nessusd start 启动nessusd服务 默认端口8834 添加用户(未知是什么用户) sudo /opt/nessus/sbin/nessus-adduser
- linux 查看是否安装perl模块
这里介绍两种linux中查看perl模块是否安装的方法,一种是对于单体的模块,一种是对于群体的. 单体验证: [root@root ~]# perl -MShell -e "print\&q ...
- 自定义表单input
我想实现下面这个效果?应该怎么写最方便呢?最有效,兼容性最好呢 我使用<p>标签套lable,加input的组合,p标签绝对定位,input标签铺满,用padding填充. 主要css . ...
- javascript学习-原生javascript的小特效(原生javascript实现链式运动)
以下代码就不详细解析了,在我之前的多个运动效果中已经解析好多次了,重复的地方这里就不说明了,有兴趣的童鞋可以去看看之前的文章<原生javascript的小特效> <!DOCTYPE ...
- iOS - Swift NSEnumerator 迭代器
前言 public class NSEnumerator : NSObject, NSFastEnumeration 1.迭代器 let arr:NSArray = ["bei", ...