说我有以下对象:
r-value
我需要做些什么才能使它起作用?在控制台中,RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/myPage"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@id/linearfirst">
<ImageView
android:id="@+id/myimageview"
android:layout_width="120dp"
android:layout_height="120dp"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="50dp" />
<com.myapp.RobotoTextView
android:layout_width="159dp"
android:layout_height="51dp"
android:layout_below="@+id/myimageview"
android:layout_alignStart="@+id/myimageview"
android:layout_alignLeft="@+id/myimageview"
android:layout_alignEnd="@+id/myimageview"
android:layout_alignRight="@+id/myimageview"
android:layout_marginStart="-15dp"
android:layout_marginLeft="-15dp"
android:layout_marginTop="13dp"
android:layout_marginEnd="-23dp"
android:layout_marginRight="-23dp"
android:gravity="center"
android:text="@string/mystring"
android:textColor="#fff"
android:textSize="12sp"
app:rt_fontWeight="light" />
</RelativeLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/linearfirst"
android:layout_marginTop="10dp"
android:layout_alignParentBottom="true"
android:paddingLeft="16dp"
android:paddingRight="16dp"
android:layout_marginBottom="2dp"
android:orientation="vertical">
<android.support.design.widget.TextInputLayout
android:id="@+id/password_text_input_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
>
<android.support.v7.widget.AppCompatEditText
android:id="@+id/password"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fontFamily="sans-serif"
android:hint="password"
android:inputType="textPassword" />
</android.support.design.widget.TextInputLayout>
</LinearLayout>
返回:
var my_object = {
value1: "220",
value2: "100",
value3_1: "300",
value3_2: "300",
value3: function() {
return +this.value3_1 + +value3_2;
}
};
..而不是“ 600”。
答案 0 :(得分:2)
var my_object = {
value1: 220,
value2: 100,
value3_1: 300,
value3_2: 300,
get value3() {
return this.value3_1 + this.value3_2;
}
};
console.log(my_object.value3);
这样,您无需“知道”哪个是函数,哪个不是。
例如,假设您需要读取所有值,则可以这样做:
Object.keys(my_object).forEach(k => console.log(k, my_object[k]))
如果没有吸气剂,则需要:
Object.keys(my_object).forEach(k => console.log(k,
typeof my_object[k] === 'function' ? my_object[k]() : my_object[k]))
答案 1 :(得分:0)
您可能想这样做:
var my_object = {
value1: "220",
value2: "100",
value3_1: 300,
value3_2: 300,
value3: function() {
return +this.value3_1 + this.value3_2;
}
};
,然后使用以下命令调用函数:my_object.value3()
注意:我在value3_2前面添加了this
,并更改了value3的值
将_1和value3_2替换为字符串中的数字会删除双引号。
答案 2 :(得分:0)
在调用函数时,需要使用括号()。因此应为 my_object.value3()。
此外,您还必须将 value3_2 替换为 this.value3_2
或者, value3_1 和 value3_2 都是数字,因此无需加引号。只需输入300。
var my_object = {
value1: 220,
value2: 100,
value3_1: 300,
value3_2: 300,
value3: function() {
return this.value3_1 + this.value3_2;
}
};