JavaScript字符串在使用call和this时显示为对象

var d = {};
d.a = 'myString';
d.b = function(a) {
    console.log(this);
}

d.b.call(d.a);

回答

这是因为您的脚本在非严格模式下运行。如果您添加“使用严格”,那么它会像您期望的那样工作:

"use strict";

let d = {
    a: 'myString',
    b: function(a) {
        console.log(this);
    }
};

d.b.call(d.a);

原因是在 ES6 之前,this 始终是一个对象。任何原语都将转换为对象。如果您不是在严格模式下运行,这仍然是行为。

如果无法将整个脚本置于严格模式,则只需将其应用于函数:

let d = {
    a: 'myString',
    b: function(a) {
        "use strict";
        console.log(this);
    }
};

d.b.call(d.a);


以上是JavaScript字符串在使用call和this时显示为对象的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>