如果我有一个如下所示的javascript对象
var columns = {
left: true,
center : false,
right : false
}
Run Code Online (Sandbox Code Playgroud)
我有一个传递对象的函数,以及一个像这样的属性名称
//should return false
var side = read_prop(columns, 'right');
Run Code Online (Sandbox Code Playgroud)
身体read_prop(object, property)会是什么样的?
可能重复:
如何从javascript对象中删除属性
如何从JavaScript对象中删除项?
像这样:
var test = {'red':'#FF0000', 'blue':'#0000FF'};
test.remove('blue');
Run Code Online (Sandbox Code Playgroud) 我在JavaScript中有一个对象:
{
abc: '...',
bca: '...',
zzz: '...',
xxx: '...',
ccc: '...',
// ...
}
Run Code Online (Sandbox Code Playgroud)
我想使用for循环来获取其属性.我想在部分中迭代它(不是一次所有的对象属性).
使用简单的数组我可以使用标准for循环:
for (i = 0; i < 100; i++) { ... } // first part
for (i = 100; i < 300; i++) { ... } // second
for (i = 300; i < arr.length; i++) { ... } // last
Run Code Online (Sandbox Code Playgroud)
但是如何用物体做呢?
在JavaScript中创建空对象有两种不同的方法:
var objectA = {}
var objectB = new Object()
Run Code Online (Sandbox Code Playgroud)
脚本引擎如何处理它们有什么不同吗?有没有理由使用一个而不是另一个?
类似地,也可以使用不同的语法创建一个空数组:
var arrayA = []
var arrayB = new Array()
Run Code Online (Sandbox Code Playgroud) 使用新数组我这样做:
$aVal = array();
$aVal[key1][var1] = "something";
$aVal[key1][var2] = "something else";
Run Code Online (Sandbox Code Playgroud)
对象是否有类似的语法
(object)$oVal = "";
$oVal->key1->var1 = "something";
$oVal->key1->var2 = "something else";
Run Code Online (Sandbox Code Playgroud) 我对JavaScript的delete运算符有点困惑.采取以下代码:
var obj = {
helloText: "Hello World!"
};
var foo = obj;
delete obj;
Run Code Online (Sandbox Code Playgroud)
在执行了这段代码之后,obj是null,但foo仍然指的是一个完全相同的对象obj.我猜这个对象是foo指向的同一个对象.
这让我很困惑,因为我期望写作delete obj删除了obj指向内存的对象- 而不仅仅是变量obj.
这是因为JavaScript的垃圾回收工作在保留/释放的基础,所以,如果我没有指向对象的任何其他变量,它会从内存中清除?
(顺便说一句,我的测试是在Safari 4中完成的.)
javascript garbage-collection pointers memory-management object
我有点困惑如何获取key并value同时使用angular2对象的*ngFor用于遍历的对象.我知道在角度1.x中有一个类似的语法
ng-repeat="(key, value) in demo"
Run Code Online (Sandbox Code Playgroud)
但我不知道如何在angular2中做同样的事情.我尝试过类似的东西,没有成功:
<ul>
<li *ngFor='#key of demo'>{{key}}</li>
</ul>
demo = {
'key1': [{'key11':'value11'}, {'key12':'value12'}],
'key2': [{'key21':'value21'}, {'key22':'value22'}],
}
Run Code Online (Sandbox Code Playgroud)
以下是我的尝试:http ://plnkr.co/edit/mIj619FncOpfdwrR0KeG?p=preview
我怎样才能获得key1并key2动态使用*ngFor?经过广泛搜索后,我发现了使用管道的想法,但我不知道如何去做.是否有任何内置管道在angular2中做同样的事情?
有没有更有效的方法将HTMLCollection转换为数组,除了迭代所述集合的内容并手动将每个项目推入数组?
我知道什么是for... in循环(它迭代密钥),但第一次听到for... of(它迭代值).我对for... of循环感到困惑.我没有得到.这是下面的代码:
var arr = [3, 5, 7];
arr.foo = "hello";
for (var i in arr) {
console.log(i); // logs "0", "1", "2", "foo"
}
for (var i of arr) {
console.log(i); // logs "3", "5", "7"
//it is does not log "3", "5", "7","hello"
}
Run Code Online (Sandbox Code Playgroud)
我得到的是,for... of迭代属性值.那么为什么它不记录(返回)"3", "5", "7","hello"而不是"3", "5", "7"?但for... in循环迭代每个键("0","1","2","foo").这里for... in循环也迭代foo密钥.但是对于...不是对foo财产价值的迭代,即"hello"为什么它是这样的?
简而言之:
在这里我控制台 …
我想编写一个常见的错误处理程序,它将捕获在任何代码实例上故意抛出的自定义错误.
当我throw new Error('sample')在下面的代码中做了
try {
throw new Error({'hehe':'haha'});
// throw new Error('hehe');
} catch(e) {
alert(e);
console.log(e);
}
Run Code Online (Sandbox Code Playgroud)
日志在Firefox中显示,Error: [object Object]我无法解析该对象.
对于第二个throw,日志显示为:Error: hehe
而当我这样做的时候
try {
throw ({'hehe':'haha'});
} catch(e) {
alert(e);
console.log(e);
}
Run Code Online (Sandbox Code Playgroud)
控制台显示为:Object { hehe="haha"}其中我能够访问错误属性.
有什么不同?
是否在代码中看到了差异?像字符串一样只是作为字符串和对象传递给对象,但语法会有所不同吗?
我没有探索过抛出错误对象......我只是抛出了字符串.
还有除上述两种方法之外的其他方法吗?
object ×10
javascript ×8
arrays ×3
angular ×1
iteration ×1
loops ×1
new-operator ×1
php ×1
pointers ×1
throw ×1
typescript ×1