首页 > 编程语言 >Java登陆第二十三天——JavaScript对象、JSON、事件

Java登陆第二十三天——JavaScript对象、JSON、事件

时间:2023-12-12 21:57:07浏览次数:47  
标签:Java name age JavaScript JSON user console log

JS中声明对象的两种格式

方法1,new object()然后依次添加属性或方法

栗子:

    <script>
        //初始化对象
        var user=new Object();
        //给对象添加属性并赋值
        user.name="张三";
        user.age=18;
        //给对象添加方法
        user.say=function () {
            console.log(user.name+"今年"+user.age+"岁");
        }
        user.say();//调用say()方法
    </script>

运行效果如下:
image

方式2,在初始化对象时直接声明属性或方法

栗子:

    <script>
        //初始化对象
        var user={
            "name":"张三",
            "age":18,
            say:function () {
                console.log(user.name+"今年"+user.age+"岁");
            }
        }
        user.say();
        console.log(user);
    </script>

运行效果如下:
image

对象是变量的容器,对于Java和JS来说都是如此。那么两种不同的语言该如何进行数据的传输呢?

为了解决上述问题,JSON由此而生!

JSON

严格来说JSON并不是新语言,只是一种规范的数据格式。菜鸟教程JSON语法

它的语法和JS声明对象的方法2相同。

首先是一对花括号包括{}

然后是属性和属性值,用冒号隔开

属性值可以是对象,也可也是数组

在JS中声明一个符合JSON格式的字符串赋值给变量on
栗子:

    <script>
        //注意,此时只是符合JSON格式的字符串!!!!(也叫JSON串)
        //注意,此时只是符合JSON格式的字符串!!!!(也叫JSON串)
        //注意,此时只是符合JSON格式的字符串!!!!(也叫JSON串)
        var on='{"name":"张三","age":18,"dog":{"dogName":"二白","dogAge":3},"idol":["周杰伦","陈奕迅","林俊杰","邓紫棋","李宗盛"]}';
        console.log(on);
    </script>

运行效果如下:
image

在JS中,将上述字符串解析为对象JSON,变量名为json1

栗子:

    <script>
        var on='{"name":"张三","age":18,"dog":{"dogName":"二白","dogAge":3},"idol":["周杰伦","陈奕迅","林俊杰","邓紫棋","李宗盛"]}';
        console.log(on);
        //JSON.parse()方法可以将字符串转换为JSON
        var json1=JSON.parse(on);
        console.log(json1)
    </script>

运行效果如下:
image

JSON通常用于后端向前端传递数据。

后端会把对象转换为JSON,再传输给前端。

(Java中并没有内置JSON的解析,因此使用JSON需要借助第三方类库。)
常用的三个库:

  • Gson
  • Jackson
  • Fastjson

GSON的Maven坐标

        <!--GSON-->
        <dependency>
            <groupId>com.google.code.gson</groupId>
            <artifactId>gson</artifactId>
            <version>2.8.9</version>
        </dependency>

在Java中使用GSON把一个类转换成JSON栗子。

栗子:

import com.google.gson.Gson;

public class Test {
    public static void main(String[] args) {
        Person person = new Person("张三", 18, new Dog("二白", 5));
        System.out.println(new Gson().toJson(person));
    }
}
class Dog{
    private String name;
    private int age;

    public Dog(String name, int age) {
        this.name = name;
        this.age = age;
    }
    //getter和setter
}
class Person{
    private String name;
    private int age;
    private Dog dog;

    public Person(String name, int age, Dog dog) {
        this.name = name;
        this.age = age;
        this.dog = dog;
    }
    //getter和setter
}

运行效果如下:
image

JS常见类库

使用时查阅即可
菜鸟教程JSString类
菜鸟教程JSNumber类
菜鸟教程JSArray类
菜鸟教程JSDate类
菜鸟教程JSMath类

JS事件

事件指的是,浏览器或用户产生一些行为就会自动触发某些特定的JS方法。

常见的事件如下:菜鸟教程更多JS事件

事件 描述
onclick 鼠标的点击
ondblclick 鼠标的双击
onkeydown 键盘的按键按下
onkeyup 键盘的按键松开

事件如何绑定

  • 通过元素的属性绑定
  • 通过DOM动态绑定

DOM会在之后进行介绍,本篇文章都是通过元素的属性绑定

一个事件可以绑定多个方法

栗子:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        button {
            font-size: 20px;
        }
    </style>
    <script>
    function f1() {
        console.log("f1方法被执行")
    }
    function f2() {
        console.log("f2方法被执行")
    }
    </script>
</head>
<body>
    <!--多个事件使用,隔开-->
    <button onclick="f1(),f2()">按钮</button>
</body>
</html>

运行效果如下:
image

一个元素可以绑定多个事件

栗子:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        button {
            font-size: 20px;
        }
    </style>
    <script>
    function f1() {
        console.log("f1方法被执行")
    }
    function f2() {
        console.log("f2方法被执行")
    }
    function f3() {
        console.log("f3方法被执行,双击")
    }
    </script>
</head>
<body>
    <button onclick="f1(),f2()" ondblclick="f3()">按钮</button>
</body>
</html>

运行效果如下:
image

标签:Java,name,age,JavaScript,JSON,user,console,log
From: https://www.cnblogs.com/Ocraft/p/17897907.html

相关文章

  • 【一个队列实现栈】Java队列——Queue接口-LinkedList实现类
    leetcode225.用队列实现栈题意:用一个队列实现栈题解:(1)弹栈:将队头开始的前size()-1个元素全部出队然后重新入队,使队尾元素循环到队头,然后弹出(2)获取栈顶元素:先将队头开始的前size()-1个元素全部出队然后重新入队,使队尾元素循环到队头,此时队头元素即为栈顶元素;然后再重新循环siz......
  • 无涯教程-Java - Non Access Modifiers函数
    Java提供了许多非访问修饰符来实现许多其他功能。static修饰符:用于创建类方法和变量的。final修饰符:用于最终确定类,方法和变量。abstract修饰符:用于创建抽象类和方法。volatile修饰符:用于线程的已同步。static(Static)修饰符Static变量static关键字用于创......
  • Java并发(十八)----常见线程安全类及实例分析
    1、常见线程安全类StringIntegerStringBufferRandomVectorHashtablejava.util.concurrent(JUC)包下的类这里说它们是线程安全的是指,多个线程调用它们同一个实例的某个方法时,是线程安全的。Hashtabletable=newHashtable();​newThread(()->{  ......
  • 【双栈实现队列】Java——Stack类
    leetcode232.用栈实现队列题意:双栈实现队列;要求每个入队、出队操作均摊O(1)复杂度题解:用一个栈in维护入队元素,另一个栈out维护出队元素出队或取队头元素:首先判断栈out是否为空,如果为空,将栈in中的元素pop()到栈out中,那么栈out栈顶元素即为原队列队头元素。(米奇妙妙屋啊~)判断......
  • 【leetcode 239. 滑动窗口最大值】Java优先队列——PriorityQueue类
    leetcode239.滑动窗口最大值题目描述:1e5大小的nums[]数组中长度为k(1<=k<=1e5)的窗口的最大值题解:暴力求解O(n^2)会超时,需要O(nlogn)的解法使用大根堆优先队列维护窗口元素,每次取最大值复杂度降为O(1),堆结构维护复杂度O(logn)问:如果维护窗口[l,r]前[0,l-1]的元素不影......
  • vscode settings.json
    {"workbench.startupEditor":"none","workbench.iconTheme":"vscode-icons","workbench.colorTheme":"Dracula","window.title":"${rootName}${separator}${profileName}",......
  • Java 8 Stream 流的常用方法总结
    Java8Stream流的常用方法总结Java8引入了一个新的API:StreamAPI,它允许我们以声明式的方式处理数据集合。StreamAPI提供了一系列强大的方法,可以帮助我们更简洁、高效地处理数据。本文将总结Java8Stream流的常用方法,并提供相应的代码示例。1.创建Stream首先,我们需要了......
  • JavaScript 中栈与堆的区别
    每种编程语言都具有内建的数据类型,但它们的数据类型常有不同之处,使用方式也很不一样,比如C语言在定义变量之前,就需要确定变量的类型。在声明变量之前需要先定义变量类型。我们把这种在使用之前就需要确认其变量数据类型的称为静态语言。相反地,我们把在运行过程中需要检查数据类型......
  • 无涯教程-Java Access Modifiers函数
    Java提供了许多访问修饰符来设置类,变量,方法和构造函数的访问级别。四个访问级别是-default(默认):对当前包可见,不需要修饰符。private(私有):当前类可见。public(公共):都可见。protected(受保护):对当前包和所有子类可见。默认访问修饰符默认访问修饰符意味着我们......
  • json to dart插件的使用
    先说一种andriodstudio中的一个插件,就叫jsonto dart,你把json文件粘贴过去,然后他可以直接生成dart对象文件,但是通常需要自定义一些配置,否则代码很难读。下面是命令的形式在Flutter开发中,你可以使用一些插件来将JSON转换为Dart类。其中一个常用的插件是dart:convert包提供的......