gpt4 book ai didi

javascript - function Name.prototype.method Name() 和 fun Object.methodName() 中调用函数有什么区别吗?

转载 作者:行者123 更新时间:2023-12-01 03:31:24 25 4
gpt4 key购买 nike

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

function ClassName() {
}

然后我为这个构造函数编写方法,如下所示

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

现在我有两种方法来调用这个新创建的方法a

  1. ClassName.prototype.a()
  2. var obj = new 类名()
    obj.a()

上述两种方式都给了我完全相同的输出,即

A Executed

但在某些地方我觉得这些一定是一些我没有意识到的差异。这两种方式有什么区别吗。请有人照亮

最佳答案

区别在于函数上下文

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()

关于javascript - function Name.prototype.method Name() 和 fun Object.methodName() 中调用函数有什么区别吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44517936/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com