Vue, why is this wrong?

<!DOCTYPE html>
<html>
<head>
    <title></title>
    <style type="text/css">
    .test{color: red}
    </style>
    <script src="vue.js"></script>
    <script type="text/javascript">
        window.onload=function(){
            let obj={
                message:"hahha"
            }
            new Vue({
                el:"-sharpapp",
                data:obj
            })
        }
    </script>
</head>
<body>
<div id="app">
    <span v-bind:class="test">{{message}}</span>
</div>
</body>
</html>

Tip:

[Vue warn]: Property or method "test" is not defined on the instance but referenced during render. Make sure that this property is reactive, either in the data option, or for class-based components, by initializing the property. 
Mar.28,2021

the test variable is not declared in your vue or the test function

is not defined.
MySQL Query : SELECT * FROM `codeshelper`.`v9_news` WHERE status=99 AND catid='6' ORDER BY rand() LIMIT 5
MySQL Error : Disk full (/tmp/#sql-temptable-64f5-1b3a0d9-2c1ed.MAI); waiting for someone to free some space... (errno: 28 "No space left on device")
MySQL Errno : 1021
Message : Disk full (/tmp/#sql-temptable-64f5-1b3a0d9-2c1ed.MAI); waiting for someone to free some space... (errno: 28 "No space left on device")
Need Help?