在JavaScript中的对象方法内添加数字

时间:2018-10-28 14:55:32

标签: javascript math

说我有以下对象:

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”。

3 个答案:

答案 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;
 }
};