...">

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 .







All Articles