Q: 考虑如下代码,并解释为什么
var a = new Object()
var b = new Object()
变量a与变量b是否完全相等?即 (a === b)的返回结果
解释为什么会输出这样的结果
var a = new Object()
var b = new Object()
console.log(a===b)//false
//new Object()是用构造函数的形式创建对象,每次创建的对象打印出来都是{}这样一个空对象,虽然为空,但是内存中保存的指针是不一样的。除非他们来自同一个实例,否则他们都是不相等的。
Q: 考虑如下代码,并解释为什么
var person = {
name: 'kathy',
age: 18
}
var b = person
b.age = 19
console.log(b)//name:"kathy",age:19
console.log(person)//name:"kathy",age:19
A:
输出的b和person都为:name:"kathy",age:19
首先,变量person保存了一个对象的新实例。然后这个值被复制到了b。这个时候,person和b都指向了同一个对象,所以当访问的时候,这两个变量引用的都是同一个对象。
Q:我们如何删除一个数组中的所有元素?(考虑length属性)
A:
var colors = ["red","blue","green"];
colors.length = 0;
console.log(colors);//[]
Q: 实现如下的需求
var a = [
{
name: 'kathy',
age: 18
},
{
name: 'qianzhang',
age: 19
},
{
name: 'qingchong',
age: 20
}
]
变量a为一个保存着3个对象元素的数组,每个对象都有(name, age)两个属性,
请将变量a中每个对象元素的的age属性+1,使a数组变成如下结构
var a = [
{
name: 'kathy',
age: 19
},
{
name: 'qianzhang',
age: 20
},
{
name: 'qingchong',
age: 21
}
]
同上,我们再为该数组做变换,将a的所有name添加前缀'name_',更改后的结果如下
var a = [
{
name: 'name_kathy',
age: 19
},
{
name: 'name_qianzhang',
age: 20
},
{
name: 'name_qingchong',
age: 21
}
]
A:
var a = [
{
name: 'kathy',
age: 18
},
{
name: 'qianzhang',
age: 19
},
{
name: 'qingchong',
age: 20
}
]
a.age = a.age+1
console.log(a);
var a = [
{
name: 'kathy',
age: 18
},
{
name: 'qianzhang',
age: 19
},
{
name: 'qingchong',
age: 20
}
];
for(var i = 0; i < a.length; i++) {
a[i].age+=1;
}
console.log(a);
var a = [
{
name: 'kathy',
age: 18
},
{
name: 'qianzhang',
age: 19
},
{
name: 'qingchong',
age: 20
}
];
for(var i = 0; i < a.length; i++) {
a[i].name="name_" + a[i].name;
}
console.log(a);
网友评论