diff --git a/src/testdir/test_vim9_class.vim b/src/testdir/test_vim9_class.vim
index a8f161d..1aee9e0 100644
--- a/src/testdir/test_vim9_class.vim
+++ b/src/testdir/test_vim9_class.vim
@@ -401,6 +401,13 @@
       var f =  Foo.new(3)
       f.Add(17)
       assert_equal(20, f.x)
+
+      def AddToFoo(obj: Foo)
+        obj.x += 3
+      enddef
+
+      AddToFoo(f)
+      assert_equal(23, f.x)
   END
   v9.CheckScriptSuccess(lines)
 enddef
diff --git a/src/version.c b/src/version.c
index aa480c1..842b583 100644
--- a/src/version.c
+++ b/src/version.c
@@ -696,6 +696,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1483,
+/**/
     1482,
 /**/
     1481,
diff --git a/src/vim9compile.c b/src/vim9compile.c
index e689c55..f045c74 100644
--- a/src/vim9compile.c
+++ b/src/vim9compile.c
@@ -2065,16 +2065,31 @@
 {
     if (lhs->lhs_type->tt_type == VAR_OBJECT)
     {
-	// "this.value": load "this" object and get the value at index
-	// for an object or class member get the type of the member
+	// "this.value": load "this" object and get the value at index for an
+	// object or class member get the type of the member.
+	// Also for "obj.value".
+       char_u *dot = vim_strchr(var_start, '.');
+       if (dot == NULL)
+           return FAIL;
+
 	class_T *cl = lhs->lhs_type->tt_class;
-	type_T *type = class_member_type(cl, var_start + 5,
+	type_T *type = class_member_type(cl, dot + 1,
 					   lhs->lhs_end, &lhs->lhs_member_idx);
 	if (lhs->lhs_member_idx < 0)
 	    return FAIL;
 
-	if (generate_LOAD(cctx, ISN_LOAD, 0, NULL, lhs->lhs_type) == FAIL)
-	    return FAIL;
+	if (dot - var_start == 4 && STRNCMP(var_start, "this", 4) == 0)
+	{
+	    // load "this"
+	    if (generate_LOAD(cctx, ISN_LOAD, 0, NULL, lhs->lhs_type) == FAIL)
+		return FAIL;
+	}
+	else
+	{
+	    // load object variable or argument
+	    if (compile_load_lhs(lhs, var_start, lhs->lhs_type, cctx) == FAIL)
+		return FAIL;
+	}
 	if (cl->class_flags & CLASS_INTERFACE)
 	    return generate_GET_ITF_MEMBER(cctx, cl, lhs->lhs_member_idx, type);
 	return generate_GET_OBJ_MEMBER(cctx, lhs->lhs_member_idx, type);
@@ -2169,7 +2184,7 @@
     if (cctx->ctx_skip == SKIP_YES)
 	return OK;
 
-    // Load the dict or list.  On the stack we then have:
+    // Load the dict, list or object.  On the stack we then have:
     // - value (for assignment, not for :unlet)
     // - index
     // - for [a : b] second index
@@ -2731,7 +2746,7 @@
 	if (lhs.lhs_has_index)
 	{
 	    // Use the info in "lhs" to store the value at the index in the
-	    // list or dict.
+	    // list, dict or object.
 	    if (compile_assign_unlet(var_start, &lhs, TRUE, rhs_type, cctx)
 								       == FAIL)
 	    {
