任何人都可以通过Javascript中的外行人解释对象和属性吗? Javascript MDN文档令我困惑。
我正在尝试解决有关对象和属性的Javascript教程中的问题问题如下,我对代码的尝试,我认为我已经遵循MDN,因为我可以掌握它。任何帮助将不胜感激!
问题:将property参数的值添加为object参数的键。 新属性的值应设置为null。 添加新属性后返回对象。
输入示例:
{}, 'hello'
{ x: 5 }, 'y'
输出示例:
{ hello: null }
{ x: 5, y: null }
注意:属性名称不是'属性'。名称是名为property(字符串)的参数的值。
我的代码: //注意:函数addProperty(object,property)已经在控制台中,我必须在其中编写解决方案。
function addProperty(object, property) {
// code here
let result = addProperty({x: 5}, 'y');
obj[property] = null;
return obj;
}
addProperty(x, 'y');
答案 0 :(得分:1)
我认为你过分思考了。
首先是问题:
在对象上添加属性参数的值作为键 参数即可。新属性的值应设置为null。返回 添加新属性后的对象。
强调添加
因此,属性将是KEY(key/value pair),而VALUE将为 object 的null,我们也将其作为参数传递。
在javascript对象上查询键/值对的一种方法是通过方括号[]。所以,如果你有一个键/值对:{foo:“bar”},你可以通过:object ['foo']得到“bar”。您也可以像这样创建新的键/值对,因此您的函数可以如下所示:
function addProperty(object, property) {
object[property] = null;
return object;
}
var obj = {};
obj = addProperty(obj, "hello");
console.log(obj);
console.log(addProperty({x: 5}, 'y'));
我们的函数正在做的是将对象传递给它(作为参数),使用我们的属性参数创建一个新的KEY,并将其VALUE设置为null,并简单地返回该对象。
*旁注 -
要小心,你发布的代码将创建一个无限的递归循环,因为你一直在调用相同的函数而无法突破它。
答案 1 :(得分:1)
这个特例很简单:
var one={};
var two={x:5};
function addProperty(object property){
obj[property]=null;
return obj;
}
addProperty(one, 'hello');
addProperty(two, 'y');
javascript中的对象非常灵活,即使从一开始就设置了属性,也可以添加或删除它们的属性。
如果你采取:
var x={};
x 将是一个没有任何内容的对象,但如果不是你写的:
var x={
inner:'b'
};
x 将是一个名为内部的属性的对象,其值为' b',现在,如果我们想访问该属性,我们可以做这样的事情:
var valueOfInner=x.inner;
或
var valueOfInner=x['inner'];
如果我们想要更改该属性的值,则相同:
x.inner=8;
或
x['inner']=8;
现在,您注意到当我们使用x。[' inner']时,我们可以很好地使用:
var propertyName='inner';
x[propertyName]=8;
因此,您可以访问和修改对象的属性,而无需确切知道您正在操纵哪个属性。
最后,如果您(意愿或偶然)尝试设置不存在的属性的值,则会自动创建该属性,例如:
x['blah']=456;
即使最初没有定义属性,也会创建属性 blah 。
编辑:是的,您可以在以后定义对象并定义其属性:
var x={};
//more code or something
x['y']=777;//now x has a y property with the value 777
答案 2 :(得分:1)
Layman的解释:
对象是属性的集合。您可以为对象指定名称以保持组织有序。例如,让我们创建一个人物对象。
import java.util.Scanner;
public class Calculator {
public static void main(String[] args) {
System.out.println("This is a calculator:");
calc();
}
public static void calc(){
System.out.println("Press *,/,+,- to perform op on following ints:");
Scanner sc = new Scanner(System.in);
String opString = sc.nextLine();
if(opString.equalsIgnoreCase("quit")){
System.out.println("Calculator quit!");
sc.close();
return;
}
switch (opString) {
case "*": multiplication();
break;
case "/": division();
break;
case "+": addition();
break;
case "-": subtraction();
}
}
public static int multiplication(){
Scanner sc = new Scanner(System.in);
int op1 = 1, op2;
while (sc.hasNextInt()){
op2 = sc.nextInt();
op1 *= op2;
System.out.println("= " + op1);
}
sc.close();
return op1;
}
public static int division(){
return 0;
}
public static int addition(){
Scanner sc = new Scanner(System.in);
int op1 = 0, op2;
while (sc.hasNextInt()){
op2 = sc.nextInt();
op1 += op2;
System.out.println("= " + op1);
}
sc.close();
return op1;
}
public static int subtraction(){
return 0;
}
该对象目前没有属性。为了进一步描述这个人,我们可以为对象添加属性。
var person = {};
现在这个对象有一些属性可以帮助描述它。写同一件事的另一种方式:
person.Name = 'Zim';
person.Age = 29;
person.Gender = 'Male';
person.Weight = 80;
如果我们必须创建一个显示人员列表的程序,那么将所有信息存储在对象中将有助于保持组织有序。
对象属性有时也称为键。
向对象添加属性:
您可以使用括号向对象添加属性,就像在var person = { Name: 'Zim', Age: 29, Gender: 'Male', Weight: 80 };
函数中一样。如果您只是需要它来添加属性,请将该属性设置为null并返回结果,它将如下所示:
addProperty
这将让我们通过调用
从上面创建我们对象的特性function addProperty(object, property) {
// code here
object[property] = null;
return object;
}