犀牛书9.1写道:
The new operator must be followed by a function invocation. It creates a new object, with no properties and then invokes the function, passing the new object as the value of the this keyword. A function designed to be used with the new operator is called a constructor function or simply a constructor. A constructor's job is to initialize a newly created object, setting any properties that need to be set before the object is used.
可以看到,javascript里的new和java里的new区别还是很大的,不要理解成同一个东西就对了。
实际上,任何function都可以跟在new后面,比如说:
function test() {
var o = new Con("hello 2011");
}
function Con(msg) {
alert("this is the message: " + msg);
}
虽然Con的本意并不是一个构造函数,但是在语法上却是没有错误的。执行test()函数,实际上就是先创建了一个普通的Object,然后执行Con()函数而已。不过这个时候Con()函数被视为Object的一个方法,相当于o.Con(msg)。所以这个时候函数体内的this就是o。(当然上面的例子里,函数体内并没有this)
分享到:
相关推荐
C语言头文件 NEW.HC语言头文件 NEW.HC语言头文件 NEW.HC语言头文件 NEW.HC语言头文件 NEW.HC语言头文件 NEW.HC语言头文件 NEW.HC语言头文件 NEW.HC语言头文件 NEW.HC语言头文件 NEW.HC语言头文件 NEW.HC语言头文件 ...
C语言头文件 NEWC语言头文件 NEWC语言头文件 NEWC语言头文件 NEWC语言头文件 NEWC语言头文件 NEWC语言头文件 NEWC语言头文件 NEWC语言头文件 NEWC语言头文件 NEWC语言头文件 NEWC语言头文件 NEWC语言头文件 NEWC语言...
在C++编程中,`new`操作符和`operator new`是两个密切相关但不完全相同的概念,它们在内存管理和对象创建方面各自承担着特定的角色。 `new`操作符是C++语言内置的关键字,用于在堆上动态分配内存并创建对象。当执行...
New Report New Report New Report New Report
Java 中 new 关键字和 newInstance() 的区分 Java 中的 new 关键字和 newInstance() 方法都是用于创建对象的,但是它们之间有着本质的区别。理解这两者的区别对于 Java 编程尤其重要。 首先,new 关键字是 Java 的...
### Malloc和New的区别 #### 一、基本概念与功能 **Malloc** 与 **Free** 是 C/C++ 语言中的标准库函数,主要用于动态内存的分配与释放。这两个函数定义在 `<cstdlib>`(或 `<malloc.h>`)库中。 **New** 与 **...
C++ 中的 new 归纳详解 C++ 中的 new 是一个关键字,同时也是操作符。new 的过程可以分为三步:获得一块内存空间、调用构造函数、返回正确的指针。在 C++ 中,new 可以分为三种形态:new operator、operator new、...
3. **异常安全**:在可能抛出异常的代码块中分配内存时,使用`try-catch`块,并在`catch`块中释放内存,防止因异常导致的内存泄漏。 4. **避免裸指针**:尽可能使用容器(如`std::vector`、`std::array`等)代替裸...
Consola的字形圆润,字符间的间距适中,使得代码在编辑器中呈现出清晰易读的效果。此外,Consola对数字和符号的处理也相当精细,确保了代码的可读性,尤其是在编写涉及到大量数字和特殊字符的程序时。 相比之下,...
其中,“60个new图标动态gif”是专为网页设计师提供的一套资源,包含了60个与“new”相关的动态GIF图标,这些图标可用于网站或应用的多处,以突出显示更新、新闻或新功能等。 动态GIF格式的普及,得益于其独特的...
在Android系统中,"system.new.dat.br" 和 "system.new.dat" 文件是刷机过程中常见的文件格式,尤其在MIUI等定制系统中尤为常见。这些文件通常包含系统的核心组件和应用,是Android设备升级或恢复时的重要部分。本文...
如果分配失败,`plain new`会抛出一个`std::bad_alloc`异常。例如: ```cpp void* operator new(std::size_t) throw(std::bad_alloc); void operator delete(void*) throw(); ``` 在尝试分配大量内存导致失败时...
4. **考虑异常安全**:重载的`new`应处理可能抛出的异常,例如当内存不足时。通常,应该在分配失败时抛出`std::bad_alloc`异常。 5. **大小对齐**:确保重载的`new`能够处理对象的大小对齐需求,因为不同的类型可能...
5. **异常处理**:`new`操作可能会抛出内存不足异常,而直接定义的对象不会面临这个问题(除非栈内存溢出)。 6. **内存泄漏**:忘记删除`new`创建的对象可能导致内存泄漏,而栈对象不存在这个问题。 总的来说,...
如果你所在的时区与UTC有八小时的差异,如在中国,那么不考虑时区的情况下,`new Date()` 打印出的时间就会比系统时间晚8小时。 解决这个问题的方法主要有两种: 1. **设置Java虚拟机(JVM)时区**: 在启动Java...
ucwap new for new
程序最多能new多少内存 程序最多能new多少内存是一个非常重要的问题。在Windows操作系统中,每个程序最多只有4G的虚拟内存,其中2G虚拟内存提供给系统用,另外2G的内存留给用户使用。对于用户来说,2G的内存是非常...
《深入解析Times New Roman字体家族》 在计算机世界中,字体是信息呈现的重要元素,它不仅关乎文字的可读性,更在很大程度上影响着视觉效果和阅读体验。Times New Roman,作为全球最广泛使用的西文印刷字体之一,其...
首先,我们要了解什么是浏览器插件。浏览器插件是增强浏览器功能的小型软件,它们可以添加到浏览器中,以提供额外的服务或改善用户体验。在谷歌浏览器中,这些插件通常以CRX文件的形式存在,如“New Tab Redirect ...
在Android系统中,`SYSTEM.NEW.DAT`是一个重要的系统文件,它包含了系统的各种核心组件、设置和应用程序。这个文件通常是经过打包处理的,以便于在设备上高效地存储和分发。本文将深入探讨`SYSTEM.NEW.DAT`的结构、...