先看最简单的一个例子:

 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的更多相关文章

  1. 是否用new来新建对象

    class A{ }: 1.不使用new来新建对象 A a: 使用完后什么也不用做,系统自动调用析构函数.使用空间是栈. 2.使用new来新建对象 A* a=new A();   delete a;/ ...

  2. js--使用构造器函数来新建对象及操作

    通过new操作符来调用函数,来达到访问对象this值得目的,构造器将其创建的对象返回给我们. 直接上代码 //创建构造器函数 function Gadget(name, color){ this.na ...

  3. 读经典——《CLR via C#》(Jeffrey Richter著) 笔记_new新建对象

    CLR使用 new 操作符来创建新对象,例如:Employee e=new Employee("Param1");  以下是 new  操作符所做的事情. 它计算类型及其所有基类型 ...

  4. oracle新建对象 权限管理

    代码 CREATE USER target IDENTIFIED BY target ; GRANT CONNECT, RESOURCE TO target; 刚刚创建的oracle实例中会内建两个用 ...

  5. java跳过构造方法新建对象

    Java有四种创建对象的方法: (1) 用new语句创建对象,这是最常见的创建对象的方法. (2) 运用反射手段,调用java.lang.Class或者java.lang.reflect.Constr ...

  6. 通过type类型 新建对象

    Activator根System命名空间中的类非常强大. 将参数传递给构造函数等有很多重载.查看以下文档: http://msdn.microsoft.com/en-us/library/system ...

  7. Session每次访问都回新建对象问题的处理

    写了一个测试Session的类,在同一个会话中的两个Servlet中通过Session进行域值传递,但是每次都回传递失败, 而返回的sessionID每次刷新都回不一样,之后通过sendRedirec ...

  8. Ajax 新建对象

    XMLHttpRequest对象是Ajax的基础,用于后台与服务器进行数据交互. 新的浏览器支撑XMLHttpRequest,而旧的浏览器不支持. var vari; if(window.XMLHtt ...

  9. JEECG新建用户不用系统用户表的实现

    首先新增组织机构 和 角色: -- 新增 组织机构 INSERT INTO `t_s_depart` VALUES ('dept001', '你所在的机构', '你所在的机构的描述', null, ' ...

随机推荐

  1. mfc unicode下一些容易容易搞混的基本类型

    经理要求以后的项目都使用unicode,整理以下看起来让人懵逼的基本类型... 其实在mfc中最容易让人发狂的就是关于字符的操作了. 两种常见基本C++char:(当然C++11新增char_16t. ...

  2. 看看,这就是微软的“万物互联”系统 window10 IOT

    今天在深圳 WinHEC2015 大会上,微软正式发布了其基于 Windows 10 开发的,专门用于一系列物联网设备的操作系统:Windows 10 IoT for Smart Devices(是的 ...

  3. BZOJ 2627 JZPKIL

    题目链接:http://www.lydsy.com:808/JudgeOnline/problem.php?id=2627 题意:计算下面式子 思路: A先不管.我们来搞B部分.下面说如何计算B这个最 ...

  4. UVA 11795 七 Mega Man's Mission

    七 Mega Man's Mission Time Limit:1000MS     Memory Limit:0KB     64bit IO Format:%lld & %llu Subm ...

  5. DrawIndexedPrimitive参数详解

    HRESULT DrawIndexedPrimitive( [in]  D3DPRIMITIVETYPE Type, [in]  INT BaseVertexIndex, [in]  UINT Min ...

  6. ABAP DESCRIBE语句

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  7. FJNU 1155 Fat Brother’s prediction(胖哥的预言)

    FJNU 1155 Fat Brother’s prediction(胖哥的预言) Time Limit: 1000MS   Memory Limit: 257792K [Description] [ ...

  8. 加速chrome之Vimium快捷键

    使用Vimium一段时间,不能完全学习所有的快捷键.但是对这种简约,vim风格的设计还是非常敬佩. 下面是一些总结: Vimium快捷键 WIKI: 是一个开源的google chrome的扩展插件, ...

  9. c++复习一:复数运算的简单实现。

    复数运算的简单实现. 程序很简单了.基本忘光了复数,重新了解了基本概念.如何在平面表示一个复数,复数的长度|x|=开根 a^2+b^2.和四则运算. 程序基本点: 封装和抽象: 1)封装成员数据,私有 ...

  10. STM32学习笔记(三) STM32的GPIO的深入学习

    STM32的开发学习主要涉及软硬件两个部分的实现,包含众多外设和总线的理解配置.STM32的整个学习曲线并不陡峭,但入门却相当困难,因此在学习之初,多动手实验和测试相当重要,GPIO作为整个STM32 ...