this数组中函数的值是多少methodArray,它是 的属性myObject?另外,是methodArray[0]普通函数还是方法?
let myObject = {
property: "Prakhar",
methodArray: [
function () {
console.log(this);
},
],
};
myObject.methodArray[0]();Run Code Online (Sandbox Code Playgroud)
在浏览器中执行此代码时,它会打印数组。不知道为什么会这样?理想情况下,如果函数不是方法或者myObject函数是方法,则它应该是窗口对象(全局)。
\n\n\n
this内部函数的价值是什么methodArray?
这取决于函数的调用方式。
\n有关 的深入概述this,请参阅MDN >>this函数上下文。这是适用于示例中的代码的引用片段:
\n\n对于典型的函数, 的值
\nthis是访问该函数的对象。换句话说,如果函数调用的形式为obj.f(),则this引用obj。
在您的示例中\xe2\x80\xa6
\n\n\nRun Code Online (Sandbox Code Playgroud)\nmyObject.methodArray[0]();\n
0\xe2\x80\xa6 该函数作为数组属性的方法调用methodArray(请记住,数组是对象,并且使用括号表示法0访问属性),因此 的值将是数组。this
为了进一步说明,这里是示例代码的稍微修改版本,它返回this函数的内部值,以便可以将其用于函数外部的比较:
let myObject = {\n property: "Prakhar",\n methodArray: [\n function () {\n return this;\n },\n ],\n};\n\nconst thisResult = myObject.methodArray[0]();\n\nconsole.log(thisResult === myObject.methodArray); // trueRun Code Online (Sandbox Code Playgroud)\r\n\n\n还是
\nmethodArray[0]函数或者方法?
方法是一个函数,它是对象的属性。0所以数组对象的属性函数是一个方法。