带有方法的 Javascript 对象返回“没有方法'我的方法名称'”错误
Javascript Object with a method returns "has no method 'my method name'" error
我正在尝试使用 JavaScript 中的方法构建自己的对象,但是,在我第一次尝试时失败了,以下代码返回了完整的代码以及" 没有方法 'writeOut' 在 chrome 开发工具控制台中。
var link = function bhLink(options) {
defaultOptions = {
targetURL: '#',
target: '_blank',
textColor: '#000',
bgColor: '#fff',
font: 'Arial',
fontSize: '12px',
lineHeight: '12px',
text: '[Test]'
}
if (typeof options == 'object') {
options = $.extend(defaultOptions, options);
} else {
options = defaultOptions;
}
link.prototype.writeOut = function() {
return $('<a></a>')
.prop({'href':this.targetURL, 'target': this.target})
.css({'font-family':this.font, 'color':this.textColor, 'font-size': this.fontSize, 'line-height':this.lineHeight});
}
} // end link
我像这样使用它
$('#id_of_some_button').click(function(e) {
e.preventDefault();
$('#id_of_some_div').html(link.writeOut);
});
点击事件和链接都在$(document).ready({});
块内。
有什么想法吗?
编辑 ====
====================================================添加了选项作为参数和 if 语句来检查是否提供了选项。.
对于尝试构建包含方法的对象,您的语法非常奇怪。首先,您尝试仅使用 this
来访问defaultOptions
对象。其次,在html()
块中调用writeOut
只是传递函数引用,而不是实例化函数。试试这个:
var link = {
defaultOptions: {
targetURL: '#',
target: '_blank',
textColor: '#000',
bgColor: '#fff',
font: 'Arial',
fontSize: '12px',
lineHeight: '12px',
text: '[Test]'
},
writeOut: function () {
return $('<a></a>', {
'text': this.defaultOptions.text,
'href': this.defaultOptions.targetURL,
'target': this.defaultOptions.target
})
.css({
'font-family': this.defaultOptions.font,
'color': this.defaultOptions.textColor,
'font-size': this.defaultOptions.fontSize,
'line-height': this.defaultOptions.lineHeight
});
}
} // end link
$('#id_of_some_button').click(function (e) {
e.preventDefault();
$('#id_of_some_div').append(link.writeOut());
});
示例小提琴
相关文章:
- 我能从“;输入“;事件是否有更好的方法来跟踪文本更改
- 有没有一种方法可以生成Braintree令牌,而不必向我的服务器添加PHP脚本
- 随机数生成器,what'我的方法/统计数据有问题吗?[JS]
- 我在jQuery中有一个循序渐进的过程,有没有更好的编码方法
- 有没有一种方法可以在IE8中解决我的Rails javascript应用程序.js的问题
- 有没有一种方法可以将我的JS函数排队到JSF事件队列中
- 有没有一种方法可以使用gull来修改我的index.thml,以防止CSS缓存
- 重复我的jQuery中的函数,有更好的方法吗
- 有没有任何方法可以使用js清除浏览器缓存,至少是我的域相关文件
- 带有方法的 Javascript 对象返回“没有方法'我的方法名称'”错误
- 有没有一种不那么黑客的方法可以防止我的 on('click') 触发两次
- 有没有更简单的方法可以在 jquery 中验证我的表单而不是我所拥有的?
- 有什么方法可以在我的 JavaScript 中引入延迟
- 我正在尝试在大范围内挑选特定单元格中带有“1”的所有行,是否有更有效的方法可以做到这一点
- 搜索用户的好方法?我有个主意,但不确定
- 有没有一种方法可以阻止用户从我的HTML页面中剪切和粘贴内容
- 有什么可靠的方法可以在不同的浏览器/平台上查看我的网络应用程序吗
- 有没有更好的方法来构建我的NPM脚本,使它们更可读
- 有调用我的js函数的元素
- ajax xmlhttprequest-post方法我的xhr被截断了,有没有数据限制大小