通过方法、事件等引用对象
Referencing an object with through methods, events, and whatnot
设置
我正在尝试为我的网站制作一个基于对象的验证代码,在这里你可以将输入定义为对象,并将属性附加到它上,有点像这个
function input(id,isRequired) {
this.id = id
this.isRequired = isRequired
this.getElement = getElem;
this.getValue = getValue;
this.writeSpan = writeSpan;
this.checkText = checkText;
this.isText = true
this.checkEmpty = checkEmpty;
this.isEmpty = true
this.isValid = false
}
我目前有一个像一样设置的事件处理程序
firstName.getElement().onblur = function() {validate(firstName)}
其中firstName是输入对象,getElement((方法执行以下操作:
function getElem() {
return document.getElementById(this.id)
}
问题
我想做的是能够通过使用类似于.this
的东西来引用带有validate函数的firstName对象,并有效地删除匿名函数。我之所以想这么做,主要是因为我的团队成员对javascript不太熟悉,代码越少越好。
我猜我正在寻找的代码看起来像这样:
firstName.getElement().onblur = validate
function validate() {
object = "your code here"
}
这可能吗?
查看.bind()
:
firstName.getElement().onblur = validate.bind(firstName);
这将使validate
函数内的this
引用firstName
(因此它不会作为参数传递(。
并非所有浏览器都支持它(它是ECMAScript5的一部分(,但链接显示了一个自定义实现。
或者,您可以创建一个新函数,为您生成匿名函数:
firstName.getElement().onblur = get_validator(firstName);
其中get_validator
为:
function get_validator(obj) {
return function() {
validate(obj);
}
}
或者你也可以做同样的事情,但作为input
对象的方法,这样你只需要做:
firstName.getElement().onblur = firstName.getValidator();
相关文章:
- 引用对象中的通用值
- 使用连字符引用对象的属性名称
- 这在 Object 方法中不引用对象,而是引用函数绑定到的标记
- Javascript对象文字,如何使用“this”来引用对象中的变量
- AngularJS select with ng选项不更新父作用域中的引用对象属性
- 如何在ES6中使用Arrow函数引用对象内部的其他函数
- 调用时可以省略引用对象
- 从函数中引用对象时遇到问题 - Adobe Animate canvas
- 在挖空中引用对象构造函数外部视图模型的属性
- 在 JavaScript 中的回调函数中引用对象
- 从充当事件处理程序的多个方法引用对象属性
- 如何引用对象中的其他节点
- 使用 javascript 通过 ID 正确引用对象
- 使用等效的 Object.indexOf 引用对象中的对象的索引
- Javascript - 事件方法中的引用对象
- 如何避免“this”引用 DOM 元素,并引用对象
- 如何按索引引用对象属性
- 在 AngularJs 中引用对象中的数据
- 如何在没有元素的情况下获取文件引用对象
- 为什么在 JavaScript 中引用对象的不存在属性不会返回引用错误