如果这是一个重复的话,我不知道其他人如何看待这个问题
所以我开始在js中学习oop。这是我的第一语言。在3个元素中,我决定开始学习继承。我似乎掌握了从其他对象继承的对象,尽管我还没有将它应用于任何编码挑战。
但问题是:我尝试学习从构造函数继承的构造函数,并且我知道你需要object.call()。
根据Mozila.developer,这是一个提供的参数。我假设我不必担心它。
但是我对这之后的论点做了什么感到困惑。
来自mozilla:
"参数
thisArg 这个值为乐趣召唤提供了。请注意,这可能不是方法看到的实际值:如果方法是非严格模式代码中的函数,则null和undefined将替换为全局对象,并且原始值将转换为对象。 arg1,arg2,... 对象的参数。 返回值
使用指定的this和arguments调用函数的结果。"
示例:
import json
with open("test.txt") as f:
mydict = json.loads('{{ {} }}'.format(f.read()))
答案 0 :(得分:1)
但是我对这之后的论点做了什么感到困惑。
thisArg
之后的参数逐个传递给被调用的函数。在您的示例中:
function A(r_a){
this.r = r_a;
}
function B(r_b){
A.call(this, r_b)
}
var b = new B(1)
值1
传递给B
,r_b
可以call
传递,A
方法将其传递到r_a
的{{1}}作为b.r
参数,最终在rectangle(Mat& img, Rect rec, const Scalar& color, int thickness=1, int lineType=8, int shift=0 )
属性中。
你可以通过这种方式传递任意多个参数。
答案 1 :(得分:0)
.call()
调用您调用它的函数。传递给它的第一个参数在该函数内变为this
。其余的作为函数参数传递。简单的例子:
function callMe(param1, param2) {
console.log(param1 + this.separator + param2);
}
callMe.call({ separator: ' ' }, 'Hello', 'world!'
所以对象{ separator: ' ' }
设置为this
,'Hello'和'world!'传递给callMe
param1
和param2
结果:
“Hello World!”
所以在你的例子中,你可能想要这样做:
function b(r){
a.call(this, r)
}
只会调用a()
函数并将参数r
转发给它。
你不能做的原因:
function b(r) {
a(r);
}
this
内的a()
上下文是错误的。在调用.call()
时,使用this
会保留a()
上下文,因此b()
和a()
都会使用相同的this
上下文执行。