如果我创建一个像这样的函数构造函数
ClassName.prototype.a = function() {
console.log("A Executed")
}
然后我像这样编写这个构造函数的方法
a
现在我有两种方法可以调用这个新创建的方法ClassName.prototype.a()
var obj = new ClassName()
obj.a()
上述两种方式都给出了完全相同的输出,即
执行
但在某个地方我觉得这些必须是我不知道的一些差异。这两种方式有什么不同吗?有人,请点亮一下
答案 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()