先看最简单的一个例子:

 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. Spring源码之SimpleAliasRegistry解读(一)

    Spring源码之SimpleAliasRegistry解读(一) 阅读spring源码中org.springframework.core.SimpleAliasRegistry类时发现该类主要是使用 ...

  2. dual,rowid,rownum

    一. dual是一个虚拟表,用来构成select的语法规则,oracle保证dual里面永远只有一条记录.我们可以用它来做很多事情,如下: 1.查看当前用户,可以在 SQL Plus中执行下面语句 s ...

  3. UVA 1366 九 Martian Mining

    Martian Mining Time Limit:3000MS     Memory Limit:0KB     64bit IO Format:%lld & %llu Submit Sta ...

  4. mysql更改已有数据表的字符集,保留原有数据内容

    mysql更改已有数据表的字符集,保留原有数据内容     原文网址:http://blog.csdn.net/learn_2/article/details/6460370 环境:在应用开始阶段没有 ...

  5. git push 403

    1. 在github上新建一个空项目. 2. git clone 到本地仓库. 3. git add [一些文件]. 4. git commit -m "first commit" ...

  6. FreeSWITCH 1.6关于视频通话的一些测试

    简单的测试了一下,暂时没把精力放到这一块. ① 视频编码透传的设置(使用代理模式). 修改internal.xml文件的以下参数: <param name="inbound-proxy ...

  7. 错题集锦(二) -- Java专项

    错题集锦(二) -- Java专项 标签(空格分隔): 找工作 JVM的内存模型 线程共享: 堆(Heap):主要存放一些对象实例 方法区(Method Area / Non-Heap):用于存储已被 ...

  8. vim 跳到指定行

    在编辑模式下输入 ngg 或者 nG n为指定的行数(如25) 25gg或者25G 跳转到第25行. 在命令模式下输入行号n : n 如果想打开文件即跳转 vim +n FileName 查看当然光标 ...

  9. Qt根据汉字生成位图,可连续调用,生成的位图不会有杂点

    void MainWindow::drawText(int font_size, QString str, int n){ QPainter p; QSize size(460, font_size) ...

  10. CSS笔记(八)表格

    参考:http://www.w3school.com.cn/css/css_table.asp 实例: <html> <head> <style type="t ...