我正在使用 jQuery 库创建一个插件。
在这里,我将String.prototype存储在一个变量中,然后我使用这个变量来扩展我的 Sting 对象。这工作正常。
// String Prototyping store in a variable
// Save bytes in the minified version of js
var StrProto = String.prototype;
String.prototype.toProperCase = function () {
return this.replace(/\w\S*/g, function (txt) {
return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();
});
};
// working fine
alert("yogesh kumar".toProperCase());
在下一种情况下,我正在创建存储在 abc变量中的 m函数 xyz ,这也可以正常工作。
function xyz(x){
alert(x)
}
var abc = xyz;
// working fine
abc("yogesh kumar");
在最后一种情况下,我将document.createElement存储在变量 标签中并使用标签创建按钮。但这不起作用。
var tag=document.createElement;
$(document.createElement("button")).html("document.Element").appendTo("#myDiv");
// not working
$(tag("button")).html("tag").appendTo("#myDiv");
请检查 jsFiddle 上的链接:
错误:
在 Chrome 中
- 未捕获的类型错误:非法调用
在火狐中
- 错误:NS_ERROR_XPC_BAD_CONVERT_JS:无法转换 JavaScript 参数
为什么会出现这个错误?
解决办法是什么?