方法,函数,这个在javascript中

Method, function, this in javascript

本文关键字:javascript 函数 方法      更新时间:2023-09-26

我有以下javascript代码。

<script>
   var myobj = {
      fname : "abc",
      lname: "xyz",
      getvalue : function(v)
      {
        alert(typeof this.getvalue);
        alert( this.fname + " " + this.lname + " " + this.v );
      }
   }; 
   myobj.getvalue(3);  
</script>

根据我的理解,getvalue上面的代码中是方法而不是函数,那么typeof this.getvalue返回函数怎么会出现。
为什么上面代码中的第二个警报显示undefined当点v为 this.v 时?

根据我的理解,getvalue上面的代码中是方法而不是函数,那么typeof this.getvalue返回函数怎么来。

JavaScript 没有"方法"的概念(至少还没有*)。这只是一个通俗地用于描述分配给对象属性的函数的术语。顺便说一句,typeof如果基本上是一个查找表。

为什么上面代码中的第二个alert显示undefined当点vthis.v时?

因为myobj没有属性v。访问不存在的属性将返回undefined


*:ECMAScript 6("JavaScript"的下一个版本)确实有方法的概念,但它主要是语法的,它们仍然只是函数。

v是方法参数而不是自身对象ref所以你应该只v

<script>
   var myobj = {
      fname : "abc",
      lname: "xyz",
      getvalue : function(v)
      {
        alert(typeof this.getvalue);
        alert( this.fname + " " + this.lname + " " + v );
      }
   }; 
   myobj.getvalue(3);  
</script>

您不会使用 v 参数调用 getvalue 函数,而只需调用 this.v
这可能是问题所在。