任性,新建对象不用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, ' ...
随机推荐
- 第二课 android项目结构
- 第一课 android环境搭建
android环境搭建需要的工具: 1.JDK 2.eclipse 3.SDK 4.ADT
- BZOJ 1797 最小割
题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=1797 题意:给出一个有向图,每条边有流量,给出源点汇点s.t.对于每条边,询问:(1)是 ...
- UVA 11552 四 Fewest Flops
Fewest Flops Time Limit:2000MS Memory Limit:0KB 64bit IO Format:%lld & %llu Submit Statu ...
- Cheatsheet: 2013 08.01 ~ 08.13
Mobile Objective C Blocks: Summary, Syntax & Best Practices Android SDK: Create an Arithmetic Ga ...
- jquery 之height(),innerHeight(),outerHeight()方法区别详解
在jQuery中,获取元素高度的函数有3个,它们分别是height(). innerHeight().outerHeight(). 与此相对应的是,获取元素宽度的函数也有3个,它们分别是width() ...
- Linux常用命令大杂烩(持续更新)
1.vimn,$s/findstr/targetstr/g #替换n到文档末尾的所有字符串:% s/^.\{4\}//g #将当前缓冲区的所有行的前4个字符删除 2.每周日早上3:30删除日志30 3 ...
- Hibernate 配置
package com.shuyinghengxie.doudou; import static org.junit.Assert.*; import org.hibernate.SessionFac ...
- 暴雪游戏-守望先锋-FPS
http://us.battle.net/overwatch/en/
- 04_IOC容器装配Bean(xml方式)
IOC容器装配Bean(xml方式) 1.Spring 提供配置Bean三种实例化方式 1)使用类构造器实例化(默认无参数) <bean id="bean1" class=& ...