gpt4 book ai didi

javascript - 不能覆盖像 setWidth 这样的 setter 函数

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:56:32 25 4
gpt4 key购买 nike

我有以下代码

qx.Class.define("myproject.EditorArea",
{
extend : qx.ui.container.Composite,

events : {
},

statics :
{
},

members :
{
__htmlArea : null,
__txtArea : null,

setWidth : function( value )
{
this.__htmlArea.setWidth( value );
this.__txtArea.setWidth( value );
return( value );
},
setHeight : function( value )
{
this.__htmlArea.setHeight( value -19 );
this.__txtArea.setHeight( value -19 );
return( value );
}

},

/**
* Constructor
* @param sHtml {String} the initial html value for this widget.
*/
construct : function( sHtml )
{
this.base(arguments);

this.setLayout( new qx.ui.layout.VBox(1));

var container = new qx.ui.container.Composite(new qx.ui.layout.HBox( 1, "right" )).set( {height:18} );
this.__htmlArea = new qx.ui.embed.Html( sHtml );
this.add(this.__htmlArea);
this.__txtArea = new qx.ui.form.TextArea("");
}
});

当从类 EditorArea 调用 setWidth() 时,框架总是调用 super 函数。

换句话说

var editor = new myproject.EditorArea( somehtml );
editor.setWidth( 460 );

调用 qx.ui.container.Composite.setWidth() 而不是myproject.EditorArea.setWidth().

永远不会达到覆盖的功能。如何覆盖这些设置函数?

最佳答案

getter 和 setter 函数是在 qx.Class.define() 期间以编程方式生成的。通常,您不想去惹他们。如果您想要自己的函数,最好创建 setMyWidth() 和 setMyHeight() 函数,即一些非自动生成名称的函数。

如果您真的非常希望函数名称为 setWidth/setHeight,您可以尝试在类定义的 defer 部分中创建这些函数。传递给 qx.Class.define 的 map 的 defer 元素与 construct、events、statics、members(参见文档)处于同一级别,并且其函数中的代码在类完全定义后运行。您可以通过在此处添加自定义函数来覆盖/完全覆盖自动生成的 getter 和 setter。不过,您处于未知领域,我不建议这样做。

德雷尔

关于javascript - 不能覆盖像 setWidth 这样的 setter 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37832341/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com