javascript中new是啥意思
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javascript中new是啥意思相关的知识,希望对你有一定的参考价值。
参考技术Anew运算符配合构造函数使用, 创建一个用户定义的对象类型的实例或具有构造函数的内置对象类型之一。例如:
//利用javascript内置对象的构造函数创建实例:var date = new Date() ; //返回当前日期
var ary = new Array(1, 2, 3); //创建一个数组, 等价于 var ary = [1, 2, 3];
//自定义构造函数:
function Person(name, age, sex)
this.name = name;
this.age = age;
this.sex = sex;
//创建实例(构造函数可以理解为模板, 实例可以理解为套用模板的具体对象):
var tom = new Person("Tom", 10, "male");
var lucy = new Person("Lucy", 12, "female");
console.log(tom.name); // Tom;
console.log(lucy.age); // 12; 参考技术B 在js当中,new只是把后面的那一块执行一遍,把结果返回回来。
Base* p = new(buf) Base是啥意思; [复制]
【中文标题】Base* p = new(buf) Base是啥意思; [复制]【英文标题】:What is the meaning of Base* p = new(buf) Base; [duplicate]Base* p = new(buf) Base是什么意思; [复制] 【发布时间】:2015-09-17 13:01:21 【问题描述】:我最近遇到了一些 C++ 代码,这些代码旨在说明可能在 valgrind、gdb、insure 等中捕获的许多不同类型的错误......
其中一个例子如下:
// =============================================================================
// A base class without a virtual destructor
class Base
public:
~Base() std::cout << "Base" << std::endl;
;
// Derived should not be deleted through Base*
class Derived : public Base
public:
~Derived() std::cout << "Derived" << std::endl;
;
// A class that isn't Base
class NotBase
public:
~NotBase() std::cout << "NotBase" << std::endl;
;
// =============================================================================
// Wrong delete is called. Should call ~Base, then
// delete[] buf
void placement_new()
char* buf = new char[sizeof(Base)];
Base* p = new(buf) Base;
delete p;
我的问题与这条线有关:
Base* p = new(buf) Base;
我在谷歌搜索前后从未见过这种语法,我什至不知道在寻找解释时要搜索什么。
谁能指出我正确的方向?非常抱歉,如果这是多余或简单的,但我很好奇这个例子中发生了什么。
谢谢。
【问题讨论】:
查找“新展示位置”。 查找new
通常可能会将您带到en.cppreference.com/w/cpp/language/new
【参考方案1】:
这是新的展示位置。它在已分配的内存块上调用构造函数。
通常 new 执行 2 个功能:
为对象分配内存
通过初始化将该内存转换为对象
placement-new 只做第二位。
它在 stl 分配器实现中被大量使用。
【讨论】:
现在明白了,谢谢。以上是关于javascript中new是啥意思的主要内容,如果未能解决你的问题,请参考以下文章