1

假设我有这样的课程。

function kevin(name){
   this.name = name;
   this.methodKevin = function(){
        console.log(this.name);
   };
   var kevin = function(){
        console.log(this.name); 
   }
   function newKevin(){
        console.log(this.name);
   }
}
  1. 它们在javascript中有什么区别?
  2. 我的班级是否完美,我的构造函数中可以有一个函数表达式吗?
4

1 回答 1

2

这取决于它们是如何被调用的,并且由于有两个函数名为:kevin.

  1. methodKevin除非由 调用,否则将绑定到窗口对象new kevin,在这种情况下,它将绑定到顶级kevin函数对象。this.name只有在被实例化的函数调用时才会按预期工作new
  2. var kevin是作用于父函数的函数kevin,因此它可能永远不会在该函数之外被调用。从这个意义上说,它是私人的。this.name会起作用,但name只有一个人就足够了。
  3. 与 2 相同
于 2012-12-31T00:15:41.853 回答