Javascript 在window.onresize中调用函数。(范围)
我有一个构造函数对象。在这个构造函数中,我有两个函数。一个称为窗口。onresize,另一个称为onBrowserResize。现在,我想在窗口内调用onBrowserResize。onresize函数。我该怎么做Javascript 在window.onresize中调用函数。(范围),javascript,oop,Javascript,Oop,我有一个构造函数对象。在这个构造函数中,我有两个函数。一个称为窗口。onresize,另一个称为onBrowserResize。现在,我想在窗口内调用onBrowserResize。onresize函数。我该怎么做 function MyObject() { window.onresize = function(event) { this.onBrowserResize(); } this.onBrowserResize = function() {
function MyObject() {
window.onresize = function(event) {
this.onBrowserResize();
}
this.onBrowserResize = function() {
}
}
我希望函数为public,这样我就可以这样调用它:object.onBrowserResize()代码>
如果我将函数设置为私有函数:var onbrowserexize=function()
,则无法在范围之外访问它
有人知道怎么做吗?我可能只是对对象中的作用域有点困惑。在JavaScript中,this
的值取决于函数的调用方式。有关详细信息,请参阅
//Constructor Object
function MyObject(){
};
MyObject.prototype.onWindowResize = function(){
this.onBrowserResize();
}
MyObject.prototype.onBrowserResize = function(){
}
//Implementation
var myObject = new MyObject();
myObject.onWindowResize();
myObject.onBrowserResize();
你的问题缺少一些细节。我的答案是假设你有这样的东西:
var MyObj = function() {
window.onresize = function(event) {
this.onBrowserResize();
}
this.onBrowserResize = function() {}
}
var myObj = new MyObj();
例如:
var MyObj = function() {
window.onresize = function(event) {
this.onBrowserResize();
}
this.onBrowserResize = function() {}
}
var myObj = new MyObj();
以下是实现这一目标的一些方法
1。只需将此.onBrowserResize作为事件处理程序传递即可(如果onresize处理程序只调用onBrowserResize
,那么最简单的方法就是:
2。缓存对本地的引用此
:
var MyObj = function() {
var that = this;
window.onresize = function(event) {
that.onBrowserResize();
}
this.onBrowserResize = function() {}
}
var MyObj = function() {
window.onresize = this.onBrowserResize.bind(this);
this.onBrowserResize = function() {}
}
3。用固定此的值:
var MyObj = function() {
var that = this;
window.onresize = function(event) {
that.onBrowserResize();
}
this.onBrowserResize = function() {}
}
var MyObj = function() {
window.onresize = this.onBrowserResize.bind(this);
this.onBrowserResize = function() {}
}
在JavaScript中,
this
的值取决于函数的调用方式。有关详细信息,请参阅
你的问题缺少一些细节。我的答案是假设你有这样的东西:
var MyObj = function() {
window.onresize = function(event) {
this.onBrowserResize();
}
this.onBrowserResize = function() {}
}
var myObj = new MyObj();
例如:
var MyObj = function() {
window.onresize = function(event) {
this.onBrowserResize();
}
this.onBrowserResize = function() {}
}
var myObj = new MyObj();
以下是实现这一目标的一些方法
1。只需将此.onBrowserResize作为事件处理程序传递即可(如果onresize处理程序只调用onBrowserResize
,那么最简单的方法就是:
2。缓存对本地的引用此
:
var MyObj = function() {
var that = this;
window.onresize = function(event) {
that.onBrowserResize();
}
this.onBrowserResize = function() {}
}
var MyObj = function() {
window.onresize = this.onBrowserResize.bind(this);
this.onBrowserResize = function() {}
}
3。用固定此的值:
var MyObj = function() {
var that = this;
window.onresize = function(event) {
that.onBrowserResize();
}
this.onBrowserResize = function() {}
}
var MyObj = function() {
window.onresize = this.onBrowserResize.bind(this);
this.onBrowserResize = function() {}
}
谢谢,但我指的是window.onresize函数不是onWindowResize。谢谢,但我指的是window.onresize函数不是onWindowResize。谢谢,我使用了选项二,因为我认为它看起来最干净。这是人们经常遇到的问题吗?是的,这是很常见的,因为在js中,
this
的行为方式。如果你习惯了传统的基于类的语言,这有点奇怪,但是你已经习惯了。。。如果您使用选项#3,您将不会有任何惊喜(即,此
内onBrowserResize
将是您的对象,而不是窗口
中的其他两个选项)。谢谢,我使用了选项二,因为我认为它看起来最干净。这是人们经常遇到的问题吗?是的,这是很常见的,因为在js中,this
的行为方式。如果你习惯了传统的基于类的语言,这有点奇怪,但是你已经习惯了。。。如果您使用选项#3,您将不会有任何惊喜(即,此
内onBrowserResize
将是您的对象,而不是窗口
中的其他两个选项)。@Magus窗口是浏览器窗口,因此不是我编造的变量。所以当我进入window函数时,它将引用window而不是我的对象。@Magus window是浏览器窗口,所以不是我编的变量。因此,当我进入窗口函数时,它将引用窗口而不是我的对象。