javascript - JS里在闭包中对this引用的困惑
大家讲道理
大家讲道理 2017-04-10 12:42:39
[JavaScript讨论组]

想在js里实现类的封装,遇到一个问题。具体的请看代码。问题见注释

var TestClass;

if (TestClass == undefined) {
  TestClass = function(){
  }
}
TestClass.prototype.init = function (options) {
	$(".alert_click").click(function(){
		this.popup("test");
                //这样的代码会提示popup未定义。如果想在此处调用popup应该怎么做?
	});
};
TestClass.prototype.popup = function (value) {
	alert(value);
}

			
$(function(){
	var testClass = new TestClass();
	testClass.init();
}
大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

全部回复(4)
黄舟
var TestClass;

if (TestClass == undefined) {
  TestClass = function(){
  }
}
	TestClass.prototype.init = function (options) {
		var self = this;
        $(".alert_click").click(function(){
                self.popup("test");//访问闭包里的this
                //这样的代码会提示popup未定义。如果想在此处调用popup应该怎么做?
        });
	};
	TestClass.prototype.popup = function (value) {
		    alert(value);
	}

                        
	$(function(){
        var testClass = new TestClass();
        testClass.init();
	});
黄舟

这篇文章可能有所帮助。http://www.ibm.com/developerworks/cn/...

PHP中文网

关于js中的this,你记住谁调用,this就指向谁

你的那个this指向的是$(".alert_click")

要访问闭包的this,只要定义个变量缓存下来就好了。我一般喜欢var _this = this;

高洛峰

var person = {
name: "Alex Russell",
hello: function() { console.log(this.name + " says hello world"); }
}

$("#some-p").click(person.hello.bind(person));

// when the p is clicked, "Alex Russell says hello world" is printed

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号