所以,我希望HTMLButtonElement的重定义构造函数带有输入参数。我知道如何在没有args的情况下做到这一点:
var CButtonPrototype = Object.create(HTMLButtonElement.prototype);
CButtonPrototype.createdCallback = function()
{
alert("call");
this.setAttribute("class", "some class");
this.value = 0;
this.innerHTML = "some text";
};
var CButton = document.registerElement('cbutton', {
prototype: CButtonPrototype
});
var myButton = new CButton();
它有效,但我想使用像var myButton = new CButton(arg 1, arg 2, etc);
这样的类。这个方法不允许我做CButtonPrototype.createdCallback = function(arg 1, arg2)
。我该如何解决这个问题?也许你知道另一种方式?
谢谢\ o /
答案 0 :(得分:1)
如果您需要扩展此类型,请考虑以下事项:
CButton.prototype.test = function()
{
console.log(arguments);
}
CButton.prototype.test2 = function(num, str, bool)
{
console.log(num + ' ' + str + ' ' + bool);
}
myButton.test(20, 'hello', true); //call test function with parameters
myButton.test2(20, 'hello', true); // still the same
关于你原来的问题:
你不能插入参数,因为这个“函数”只是系统函数的委托...在你的情况下 - 一个对象c'tor。
测试它你可以尝试参数 - js中每个函数内部的一个特殊数组,表示函数的参数:
var CButtonPrototype = Object.create(HTMLButtonElement.prototype);
CButtonPrototype.createdCallback = function()
{
console.log(arguments); // print arguments to the console screen
this.setAttribute("class", "some class");
this.value = 0;
this.innerHTML = "some text";
};
var CButton = document.registerElement('cbutton', {
prototype: CButtonPrototype
});
var myButton = new CButton();
运行此代码 - 您将看到一个空数组 - 主要是因为您的c'tor调用'new CButton()'没有参数。尝试插入参数,您将收到错误。