' , Class...">

IE5のゲッターとセッター+

それはhabrahabr.ru/blogs/javascript/66242に触発されました

一般的な考えに反して、IEはアクセサを割り当てることができますが、一部のタスクには十分なVBのみです。

<script language= "vbscript" >
' ,
Class Accessor
Public Property Let hook(val) ' hook Accessor
MsgBox val
End Property
End Class

Dim access ' VB
Set access = New Accessor ' Accessor
</script>

<script language= "jscript" >
// .. VB JS , access
access.hook = 'ololo' ;
</script>


* This source code was highlighted with Source Code Highlighter .


つまり、VBにはアクセサーがあり、VBはすべてのIEにあり、名前空間VBとJSは共通であり、それを使用できます。

このラッパーは私のタスクに十分でした:

<script>
// VB, language IE VB
</script>

<script language= "vbscript" >
Class Accessor
Public Property Let hook(val)
propset val ' hook propset
End Property
End Class
Dim access
Set access = New Accessor
</script>


<script>
function propset(val) { //
alert(val);
}
if ( /*@cc_on!@*/ true ) { // Accessor javascript
access = {};
access.__defineSetter__( 'hook' , function (val) {propset(val)})
}

access.hook = 'hi' ; //
</script>


* This source code was highlighted with Source Code Highlighter .


残念ながら、軟膏にハエがないわけではなく、割り当てられた値はスカラーのみであり、オブジェクトはエラーになります:

access.hook = {}; // :

* This source code was highlighted with Source Code Highlighter .


一般に、VBとその実装の複雑さを熟知していないため、おそらくこの問題はどうにかして回避できますか?

UPD:このアクセサは次のように宣言する必要があるため、割り当てられた値はスカラーだけでなく、 keksnのおかげです。
Class Accessor
Public Property Let hook(val)
propset val
End Property
Public Property Set hook(val)
propset val
End Property
End Class
Dim access
Set access = New Accessor


* This source code was highlighted with Source Code Highlighter .

Source: https://habr.com/ru/post/J75158/


All Articles