在对象原型中存储的事件处理程序中,保留this JavaScript引用的正确方法是什么? 我想远离创build像'_this'或'that'的临时variables,我不能使用像jQuery这样的框架。 我看到很多人谈论使用“绑定”function,但不知道如何在我的情况下实现它。 var Example = function(foo,bar){ this.foo = foo; this.bar = bar; }; Example.prototype.SetEvent = function(){ this.bar.onclick = this.ClickEvent; }; Example.prototype.ClickEvent = function(){ console.log(this.foo); // logs undefined because 'this' is really 'this.bar' };
我正在使用Reactjs,编写一个菜单组件。 "use strict"; var React = require("react"); var Menus = React.createClass({ item_url: function (item,categories,articles) { console.log('afdasfasfasdfasdf'); var url='XXX'; if (item.type == 1) { url = item.categoryId == null ? 'javascript:void(0)' : path('buex_portal_browse_category', {slug: categories[item.categoryId].slug}); } else if (item.type == 2) { url = item.articleId == null ? 'javascript:void(0)' : path('buex_portal_view_article', {slug: articles[item.articleId].slug, id: item.articleId}); } […]
在类方法中看到这一行,我的第一反应是嘲笑写它的开发人员。但是,然后,我想我应该确保我是对的第一。 public void dataViewActivated(DataViewEvent e) { if (this != null) // Do some work } 这条线会评估为假?
有两种方法可以引用该类中的类的实例。 例如: class Person { String name; public void setName(String name) { this.name = name; } public void setName2(String name) { Person.this.name = name; } } 一个使用this.name来引用对象字段,而另一个使用className.this来引用对象字段。 这两个引用有什么区别?
读完mozilla文档后,我发现这个: 在全局执行上下文(在任何函数之外),这是指全局对象,无论是否在严格模式下。 玩了一段范围后,我发现在node.js REPL … > this === global true 但是当我用同一行创build一个脚本… $ cat > script.js console.log(this === global) $ node script.js false 这是有原因吗? 或者是一个错误?
我想避免(大部分)Netbeans 6.9.1的警告,我有一个'Leaking this in constructor'警告”的问题。 我明白这个问题,在构造函数中调用方法并传递“ this ”是危险的,因为“ this ”可能没有被完全初始化。 在单例类中修改警告很容易,因为构造函数是私有的,只能从同一个类中调用。 旧代码(简体): private Singleton() { … addWindowFocusListener(this); } public static Singleton getInstance() { … instance = new Singleton(); … } 新代码(简体): private Singleton() { … } public static Singleton getInstance() { … instance = new Singleton(); addWindowFocusListener( instance ); … } 如果构造函数是公共的,并且可以从其他类调用此修复程序不起作用。 如何修复下面的代码: public class […]
我试图在事件处理程序中访问JavaScript中的原型类的成员variables – 我通常使用“this”关键字(或“在事件处理程序的情况下, 。 不用说,我遇到了一些麻烦。 举个例子,这个HTML片段: <a id="myLink" href="#">My Link</a> 而这个JavaScript代码: function MyClass() { this.field = "value" this.link = document.getElementById("myLink"); this.link.onclick = this.EventMethod; } MyClass.prototype.NormalMethod = function() { alert(this.field); } MyClass.prototype.EventMethod = function(e) { alert(this.field); } 实例化一个MyClass对象并调用NormalMethod就像我期望的那样工作(警告说“值”),但点击链接会导致一个未定义的值,因为“this”关键字现在引用事件目标(anchor()HTML元素) 。 我对JavaScript风格的原型还不熟悉,但是在过去,通过closures,我只是在构造函数中创build了一个“this”的副本: var that = this; 然后我可以通过“that”对象访问事件方法中的成员variables。 这似乎不适用于原型代码。 有没有另一种方法来实现这一目标? 谢谢。
为什么IDE会抱怨“在构造函数中泄漏这个”? 我一直认为这只是不好的做法。 但我从来没有发现它为什么坏。
我认为这将是我可以轻松谷歌,但也许我不是问正确的问题… 如何在给定的JavaScript函数中设置“this”引用的内容? 比如像jQuery的大部分函数一样,比如: $(selector).each(function() { //$(this) gives me access to whatever selector we're on }); 如何在调用时自己写/调用具有适当的“this”引用的独立函数? 我使用jQuery,所以如果有一个特定于jQuery的方法,那就太理想了。
我是新来的android和我试图了解getApplication() , getApplicationContext( ), getBaseContext() , getContext()和someClass.this ,特别是当在以下代码行中使用这些方法: 当我发起敬酒之间有什么区别,在哪些情况下,我使用它们? Toast.makeText(LoginActivity.this, "LogIn successful", Toast.LENGTH_SHORT).show(); Toast.makeText(getApplication(), "LogIn successful", Toast.LENGTH_SHORT).show(); Toast.makeText(getApplicationContext(), "LogIn successful", Toast.LENGTH_SHORT).show(); Toast.makeText(getBaseContext(), "LogIn successful", Toast.LENGTH_SHORT).show(); 意图相同: Intent intent = new Intent(getApplicationContext(), LoginActivity.class); Intent intent = new Intent(MenuPagina., LoginActivity.class); Intent intent = new Intent(getBaseContext(), LoginActivity.class); Intent intent = new Intent(getApplication(), LoginActivity.class);