gpt4 book ai didi

javascript - 为什么 this == 窗口?

转载 作者:行者123 更新时间:2023-12-03 01:07:13 30 4
gpt4 key购买 nike

在浏览器 (Chrome) 中 JavaScript:

var DataModler = {
Data: { Something: 'value' },

Process: function() { alert('not implemented.'); },
Render: function() { alert('not implemented.'); }
}

DataModler.Process = function() {
// do some data processing, then render it.
this.Render(); // this == Window, so an exception is thrown.
};

DataModler.Render = function() {
// render the data.
};

我遇到的问题是,如果我在 DataModler.Process() 设置断点, this设置为Window 。我预计this设置为定义函数的对象,在我看来是 DataModler 。如果我在 DataModler 的定义内实现该函数,然后this == DataModler正如我所期望的。

所以我想问题是,如何允许对象上的函数被替换但仍然有 this引用定义该函数的对象( DataModler )?

最佳答案

正如 c69 的评论中提到的,由于函数的实际调用方式,您遇到了这个问题。你可以这样写

DataModler.Process = function() {
...
}.bind(DataModler);

确保 Process 中的 thisDataModler

关于javascript - 为什么 this == 窗口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52340620/

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