在functionName.prototype.methodName()和funObject.methodName()中调用函数有什么区别吗?

时间:2017-06-13 09:47:41

标签: javascript node.js

如果我创建一个像这样的函数构造函数

ClassName.prototype.a = function() {
console.log("A Executed")
}

然后我像这样编写这个构造函数的方法

a

现在我有两种方法可以调用这个新创建的方法ClassName.prototype.a()

  1. var obj = new ClassName() obj.a()
  2. {{1}}
  3. 上述两种方式都给出了完全相同的输出,即

      

    执行

    但在某个地方我觉得这些必须是我不知道的一些差异。这两种方式有什么不同吗?有人,请点亮一下

1 个答案:

答案 0 :(得分:2)

区别在于功能背景



function ClassName(name) {
  this.name = name;
}

ClassName.prototype.a = function() {
  console.log("A Executed", this.name, this === obj, this === ClassName.prototype)
}

var obj = new ClassName('test')
obj.a();
ClassName.prototype.a()