我知道ECMAScript 6有构造函数,但ECMAScript 6的析构函数是否存在?
例如,如果我将一些对象的方法注册为构造函数中的事件侦听器,我想在删除对象时删除它们.
一种解决方案是desctructor为每个需要此类行为的类创建方法并手动调用它.这将删除对事件处理程序的引用,因此我的对象将真正准备好进行垃圾回收.否则它会因为那些方法而留在记忆中.
但是我希望ECMAScript 6能够在对象被垃圾收集之前调用本机.
如果没有这样的机制,这种问题的模式/惯例是什么?
这是我为这个简单任务的javascript代码:
如果元素不在数组中,请添加元素.
if(_.contains(this.types,type_id)){
var index = this.types.indexOf(type_id);
this.types.splice(index,1);
}
else{
this.types.push(type_id);
}
Run Code Online (Sandbox Code Playgroud)有没有更有效的方法来做到这一点?
我正在使用jQuery,我正在以这种方式处理变量:
var array = {};
array[an_object] = something
array[another_object] = something_else
array[...] = ...
Run Code Online (Sandbox Code Playgroud)
当我尝试运行该splice方法时,array我得到一个TypeError: array.splice is not a function.我的意图是an_object从array变量中删除"密钥"及其所有内容.
我该怎么做?
注意:当我运行console.log(array[an_object])(同样有效another_object和所有其他对象)时,我得到:
[Object { label="str1", value=1 }, Object { label="str2", value=2 }, { label="strN", value=N }]
Run Code Online (Sandbox Code Playgroud) 我有一个json对象,如下所示.我想删除"otherIndustry"条目及其值,使用下面的代码不起作用.
var updatedjsonobj = delete myjsonobj['otherIndustry'];
Run Code Online (Sandbox Code Playgroud)
如何删除Json对象特定的键及其值.下面是我的示例json对象,我想删除"otherIndustry"键及其值.
var myjsonobj = {
"employeeid": "160915848",
"firstName": "tet",
"lastName": "test",
"email": "test@email.com",
"country": "Brasil",
"currentIndustry": "aaaaaaaaaaaaa",
"otherIndustry": "aaaaaaaaaaaaa",
"currentOrganization": "test",
"salary": "1234567"
};
delete myjsonobj ['otherIndustry'];
console.log(myjsonobj);
Run Code Online (Sandbox Code Playgroud)
日志仍然打印相同的对象而不从对象中删除"otherIndustry"条目.
我认为这是一个奇怪的问题,但我不得不问......
如果我有一个看起来像这样的js对象:
$scope.obj1 = {
"name":"John",
"number":"Eleven",
"color":"Red"
}
Run Code Online (Sandbox Code Playgroud)
有没有办法删除整个财产?没有重新赋值给新对象 ..所以如果我想摆脱"number":"Eleven",我希望对象看起来像这样......
$scope.obj1 = {
"name":"John",
"color":"Red"
}
Run Code Online (Sandbox Code Playgroud)
谢谢!
我有一个我正在使用的数组,我很难描述它是什么类型的数组,这使我很难使用它.到目前为止它对我有用.我只是好奇.
我最终想要删除这个数组的结尾.
我试着.pop()和 .grep().它不起作用.
这是我的代码示例.
var options = {};
$('.option:visible').each(function(){
var option_label = "";
var option_selected = [];
var option_img = "";
...
options[option_label] = {
option_selected: option_selected,
option_image : option_img
};
});
Run Code Online (Sandbox Code Playgroud)
我想要做的是:
if(option_label.indexOf("something") != -1) {
//then pop off options
}
//continue about your business
Run Code Online (Sandbox Code Playgroud)
为了澄清,我不知道确切的标题option_label.
我有一个看起来像这样的数组:
$scope.quotes =
[
{
'quote': 'foo',
'author': 'bar',
'source': 'foobar',
'first': 'slideout',
},
{
...
},
]
Run Code Online (Sandbox Code Playgroud)
我试图首先删除键值:从数组中滑出.像这样:
delete $scope.quotes[0][first];
Run Code Online (Sandbox Code Playgroud)
我也尝试过:
delete $scope.quotes[0].first;
Run Code Online (Sandbox Code Playgroud) 假设我有以下代码:
interface A {
a: number;
}
interface B extends A {
b: number;
}
const b: B = {a: 1, b: 5};
const a: A = b as A;
Run Code Online (Sandbox Code Playgroud)
现在变量a有 type A,但它仍然包含b在其中。有时这是不可取的 - 我想确定,如果我有一个 type 变量A,它具有type的确切字段A。我想知道,TypeScript 是否有某种“硬转换”可以在类型之间转换时删除任何不需要的字段。
我尝试在此处阅读如何从对象中删除属性:How do I remove a property from a JavaScript object?
它应该使用delete,我尝试这样
const eventData = {...myEvent}; // myEvent is an instance of my `Event` class
delete eventData.coordinate; // I have error in here
Run Code Online (Sandbox Code Playgroud)
但我有这样的错误
“删除”运算符的操作数必须是可选的。ts(2790)
然后我读到:Typescript 无法推断删除运算符和扩展运算符?
似乎可以通过使用更改我的 tsconfig.json 文件来消除该错误
{
"compilerOptions": {
...
"strictNullChecks": false,
}
...
}
Run Code Online (Sandbox Code Playgroud)
但如果我实现这个,我将不再进行空检查
那么如何从 Typescript 中的对象中删除属性而不使用“删除”运算符的操作数必须是可选错误?
我有以下对象
b.push({ data: d, width: 5, color: color });
Run Code Online (Sandbox Code Playgroud)
然后我有
b= [{data:10,width:5, color:"yellow"},{data:12,width:5, color:"red"},etc...];
Run Code Online (Sandbox Code Playgroud)
我添加了color属性,现在我不需要,我想删除它.我想知道最简单的方法是什么?
javascript ×8
arrays ×3
jquery ×2
object ×2
typescript ×2
angularjs ×1
ecmascript-6 ×1
json ×1
toggle ×1