【复习】javascript 类

JavaScript 从 0 到 1 入门手册(2020版) 本手册的重点将放到 JavaScript 语言本身身上,也就是 JavaScript 核心语言(The Core (ECMAScript)这部分,帮助你快速入门。 如果你把 JavaScript 选为你的第一门语言,那么希望本手册能够帮助到你尽快掌握它。 如果你已经在日常开发中使用 JavaScript 了,那么本手册的内容也是一个很好的复习。 阅读详情

类的本质 

类(class)的本质是function

类的所有方法都定义在类的prototype属性上

类创建的实例,里面的原型(__proto__)也指向类的原型对象(prototype)

ES6的类的绝大部分功能,ES5也能做到,新的class写法只是让对象原型的的写法更加的清晰,更像面向对象编程的语法

ES6的类其实就是语法糖(便捷写法)

 创建类 

class Star {
			//构造器
			constructor (uname, age, sex) {
				// uname姓名,age年龄,sex性别
				// 对象.属性 = '值';
				// 构造函数再new的时候,就会执行
				this.uname = uname;
				this.age = age;
				this.sex = sex;
				// 构造函数中的this指向当前对象
				console.log(this);
			}
           //给类添加方法
           tiao () {
				console.log('跳舞');
			}
		}

		// 对类实例化,就可以得到一个具体的对象
		var ldh = new Star('刘德华', 16, '男');
		console.log( ldh );
		// console.log( ldh );
		// console.log( ldh.uname );
		// console.log( ldh.age );
           //调用方法
           ldh.tiao(); 

		var zxx = new Star('周星驰', 19, '男');
		console.log(zxx);

 

 类的继承

 子类通过extends关键字来继承父类,super用来调用父类构造函数和普通函数

class Father {
			constructor (uname, age) {
				this.uname = uname;
				this.age = age;
			}
			qian () {
				console.log('赚他一个亿');
			}
		}


		// 类的继承
		class Son extends Father  {
			// 如果儿子需要有自己的属性(分数)
			constructor (uname, age, score) {
				// this.uname = uname;
				// this.age = age;
				// super用来调用父类的构造函数和普通函数
				super(uname, age);
				this.score = score;
			}

			qian () {
				// 普通函数,方法
				super.qian();
				console.log('两毛钱');
			}
		}

		// 实例化对象
		var obj = new Son('儿子', 6, 99);
		console.log( obj );
		obj.qian();

 

  this指向

  constructor(构造器)中的this指向当前实例对象

  方法中的this,指向的是调用者,即谁调用,指向谁

class Btn {
			constructor (id) {
				// this.uname = uname;
				this.btn = document.querySelector(id);
				// 点击调用say方法
				// 注意:因为这个方法点击之后才要调用,所以添加的时候不要带括号
				this.btn.onclick = this.say;
			}

			// 方法中的this:指向的是调用者
			say () {
				console.log(this);
			}
		}

		var o = new Btn('#d1');
		console.log( o );
		// 实例对象调用say方法:里面的this指向的是实例对象
		// 如果是按钮点击调用say方法:里面的this指向的是按钮
		o.say();

		// class Star {
		// 	// 构造函数中的this:this指向当前实例对象
		// 	constructor (uname, age) {
		// 		this.uname = uname;
		// 		this.age = age;
		// 		console.log(this);
		// 	}
		// 	// // 方法中的this
		// 	// say () {
		// 	// 	console.log(this);
		// 	// }
		// }

		// // 构造函数中的this
		// var obj = new Star('带土', 22);
		// console.log(obj);

		// var you = new Star('鼬', 19);
		// console.log(you);

 

优化NEXYS A7开发板(Xilinx Artix-7)Microblaze核的FLASH读写性能实战 本文针对NEXYS A7开发板(Xilinx Artix-7)上Microblaze核读写FLASH速度慢的问题,提供了系统性的优化实战指南。通过深入分析SPI控制器配置、Flash指令模式选择、Microblaze核的Cache与硬件加速器优化,以及程序运行位置(BRAM vs DDR)的调整,有效将FLASH读写性能从“龟速”提升至接近理论峰值。文章结合实测数据,为FPGA嵌入式开发者提供了清晰的性能瓶颈分析与解决方案。 阅读详情

相关推荐

欧姆龙PLC EIP通讯配置方法

欧姆龙EIP通讯配置方法

weixin_59671695的博客 6142

JS复习类相关知识

我们把Person类折起来,再创建一个Student类继承Person类: 我们在Student类中没有写构造器,这也行吗?是可以的,子类直接用了父类的构造器 如果我们想给Student类加一个参数,这样写就接收不到了。 为了解决这个问题(子类想拥有自己独有的一些属性),我们就要在子类中写构造器并且调用super方法: 注意: super必须放在最前面 我们再看一下,Student类上面有没有自己的方法,那它的实例能不能调用父类Person的方法? ...

Hiroshi's 142

Matlab App Designer自学笔记(六):坐标轴控件axis函数绘图方法

作用: 绘制函数显示 显示图像(jpg png tiff) 颜色选项: r(红色) g(绿色) b(蓝色) w(白色) k(黑色) 其他 一、坐标区控件及设置 可以对坐标去进行设计: 二、功能实现及编程 功能:点击“绘图按钮”,能显示曲线。 实现:对按钮设置回调函数 若要多个图像显示在一个坐标系中,需要语句:hold(app.UIAxes,"on"); app.UIAxes是这个坐标轴的名字。 function ButtonP...

陶小桃Blog 3万+

js复习笔记--类(三)

类和模块 1. 类和原型 利用工厂函数创建范围类初始化实例: function range(from, to){ var r = Object.create(range.methods); r.from = from; r.to = to; return r; } //左闭右开 ra...

Shaft_的博客 306

matlab物元可拓模型程序,熵权可拓物元模型

1 概述物元分析方法是中国学者蔡文于20世纪80年代提出的用于解决矛盾问题的技术方法,是研究物元及其变化规律,解决现实世界中不相容问题的有效方法,可应用于生态环境,水资源承载力,农用地分级和土地生态水平等综合评价研究中.本文主要介绍了熵权可拓物元模型的相关概念与该模型的建立过程.2 概念2.1 物元物元分析法的主要思想是把事物用"事物,特征,量值"(分别用N,C,V表示)3个要素以有序三元组的形式...

weixin_33823399的博客 4118

CAN开发笔记(TI开发者推荐笔记)

查阅了很多资料没有查阅到关于5728芯片CAN模块寄存器的介绍,希望通过本文能给做CAN驱动的后来者有一点参考意义,我也是刚接触CAN模块有些不足请各位多多指正。 由下图所示是CAN模块初始化流程图 首先要开始初始化,设置CAN位时间,然后配置message objects, 完成初始化。 1.开始初始化 首先要控制DCAN_CTL 寄存器,该寄存器是CAN模块的总控制器,很多配置通过...

weixin_44316996的博客 3563

js基础复习9-ES6类的本质

回顾上一节,我们知道ES6之前是通过构造函数+ 原型实现面向对象编程,构造函数有如下特点: 1.构造函数有原型对象属性prototype 2.构造函数的原型对象属性prototype里面有constructor指向构造函数本身 3.构造函数可以通过原型对象添加方法 4.构造函数的实例对象有__proto__对象原型指向构造函数的原型对象prototype 类的本质是一个函数,我们也可以简单的认为类就是构造函数的另一种写法 1.类也有原型对象属性prototype 2.类的原型对象属性prototype里面

Hiroshi's 299

湿式双离合器自动变速器simulink建模与仿真

随着汽车工业的不断发展,自动变速器在提高汽车性能、驾驶舒适性和燃油经济性等方面发挥着越来越重要的作用。湿式双离合器自动变速器(Wet Dual-Clutch Transmission,简称 WDCT)作为一种先进的自动变速器技术,具有换挡速度快、动力传递平稳、燃油经济性好等优点,被广泛应用于各类汽车中。结构组成湿式双离合器自动变速器主要由双离合器、齿轮传动系统、液压控制系统和电子控制系统等部分组成。双离合器:由两个独立的离合器组成,分别控制奇数挡和偶数挡。通过切换两个离合器的工作状态,可以实现快速换挡。

平时工作较为繁忙,私信消息一般晚上回复,谢谢大家~~ 348

JS复习-18-ES6的类

ES6 的类 我们在 ES5 以前, 我们就用 函数 来充当 构造函数(类) + ES6 引入了一个 类 的概念 => 就是使用一个新的关键字来定义 构造函数(类) => 定义完毕以后, 就是一个类, 不能当作函数来调用 => 只能通过 new 来得到一个对象 类的语法: 语法: class 类名 { // 构造器, 我这个类创造的对象里面有哪些属性 constructor () {

qq_36158581的博客 122

RK3568驱动 SPI主/从 配置

RK3568 SPI 配置指南 内核配置:启用用户空间驱动(主)和从模式协议支持。 主模式:设备树设置status="okay"、max-freq及引脚复用,子节点compatible="rockchip,spidev"。 从模式:需添加spi-slave属性,子节点命名以slave@X开头。 编译烧写:修改设备树后编译内核或全量镜像,验证/dev/spidevX.Y节点。 测试:使用spidev_test工具,主模式可环回测试,从模式需与主设备通信。 (关键:从模式强制spi-slave和命名规则,频率匹

文石_2009的博客 1148

Oracle11g下载与安装(windows)

一、Oracle11g下载 二、安装准备 三、执行安装步骤 四、测试连接 附:Oracle11g服务说明

欢迎订阅我的“JAVA全栈开发笔记(全)”专栏,价格优惠,仅需19.9元。 2万+

【JavaScript复习六】内置对象string定位类获取方法

欢迎来到JS复习专栏,本文章主要内容是内置对象string定位类方法。

weixin_62542181的博客 374

极验验证码: 一点即过验证(鼠标轨迹分析)

2、第一个验证接口分析(第一个w值还原) 3、第二个验证接口(第二个w值还原)这里定位w生成跟上篇文章一样,就不展开了;主要分析tt值(鼠标轨迹)的生成逻辑

qq_49268524的博客 1011

js复习 日期对象/Math/包装类/字符串方法

获取当前时间的时间戳 其实就是毫秒数(值的是格林威治标准时间1970年1月1日0时0分0秒 到现在的时间 的毫秒数 1秒等于1000毫秒)subString() //也是可以用来截取一个字符串 和slice()类似(不同的这个方法不可以接受负值 所以一切负数都会转化为0)indexOf() //检索一个字符串中是否含有指定的内容(如果监测字符串中有相应的字符 会返回字符当下的索引 没有的话返回-1)注意:在我们设置我们现在是北京时间 跟柏林有8小时的时差!...

m0_58266149的博客 277

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

js基础复习之包装类、正则表达式、字符串的相关方法

1.包装类 - 在JS中为我们提供了三个包装类: String() Boolean() Number() - 通过这三个包装类可以创建基本数据类型的对象 例子: var num = new Number(2); var str = new String(“hello”); var bool = new Boolean(true); - 但是在实际应用中千万不要这么写。 - 当我们去操作一个基本...

所学所思 617

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

4.11复习日记 js类的继承、构造函数的继承、原型、原型链

js内容 1.class类(ES6新增) 面向对象与面向过程 类的继承 class Father{ // 父类 } class Son extends Father { // 子类继承父类 } super关键字 super 关键字用于访问和调用对象父类上的函数。可以调用父类的构造函数,也可以调用父类的普通函数 class Person { // 父类 constructor(surname){ this.surname = surname;

平行时空的猫 159

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

js复习笔记-ES6的类(五)

class(ES6构造函数的语法糖): 总述: ES5写法: 父类: function Animal(){ this._name = "animal"; } Animal.prototype = { constructor: Animal, get name(){ ret...

Shaft_的博客 292

js复习的:变量,解构赋值,展开,箭头函数,模块化,类;数组方法补充

js重点复习

qq_52563729的博客 492

【JS】ES6类Class复习笔记以及与ES5类构造函数的对比

es6中class会自动开启严格模式,所以没有指定this的时候,this会是undefined 到目前为止,本人遇到过的,在class内部的属性有四种写法,以下展示: class Fun { constructor() { //构造器中的this固定是类的实例对象,所以以下写法会给实例对象上添加属性 this.d = d this.e = () => {

Voiceu的博客 517

【JavaScript复习六】内置对象string定位类获取方法,前端开发模式

返回字符串指定位置的字符。这里的和str[index]的效果是一样的。字符串中第一个字符的下标是 0。如果参数index不在之间,该方法将返回一个空字符串。

2401_84140628的博客 208

复习JavaScript时的笔记

复习JavaScript时的笔记 跟着w3cSchool复习时,一些没记住的东西。 Math类 Math.round()四舍五入 Math.random() 0~1之间随机数 正则表达式 RegExp 对象 var patt1=new RegExp(“e”); document.write(patt1.test(“The best things in life are free”...

qq_39154774的博客 291

2021-07-27

今日完成 闭包 对象 包装类复习 明天完成 原型 原型链 callapply复习

qq_52249101的博客 105

周总结 5.7-5.12

一、 本周完成任务2018.5.7: 学习了解了类和对象的方法详解和变量2018.5.8: 学习了解了隐藏和封装2018.5.9:回顾了之前的知识2018.5.10:学习了解了深入构造器、类的继承2018.5.11:学习了解了多态、包装类2018.5.12:学习了解了final、abstract、interface 二、 本周总结总结本周的收获:这周课上讲的知识基本上都能掌握,但是要及时去回顾,不...

J94926的博客 169

前端面试 - css , 布局 ,js ,vue

1. 介绍一下标准盒子模型和低版本IE盒子模型标准盒子模型 宽度 = content+border+padding+margin 低版本IE盒子模型 宽度 = 内容宽度(content+border+padding)+margin 也就是说区别在于,低版本IE盒子模型的内容宽度直接包含了border和padding 转存失败重新上传取消转存失败重新上传取消正在上传…重新上传取消转存失败重新上传取消转存失败重新上传取消 ...

四月 370

010-011 复习类相关知识、类式组件

执行了ReactDOM.render(…之后,1.React解析组件标签,找到MyComponent组件。2.发现组件是使用类定义的,随后new出来该类的实例,并通过该实例调用到原型上的render方法。3.将render返回的虚拟DOM转为真实DOM,随后呈现在页面中。

2302_80673485的博客 261

javascript中字符串常用操作总结、JS字符串操作大全

javascript中字符串常用操作总结、JS字符串操作大全 C#字符串和正则表达式参考手册PDF电子书 立即下载 字符串的操作在js中非常频繁,也非常重要。以往看完书之后都能记得非常清楚,但稍微隔一段时间不用,便会忘得差不多,记性不好是硬伤啊。。。今天就对字符串的一些常用操作做个整理,一者加深印象,二者方便今后温习查阅。 String对象属性 (1) le...

weixin_34303897的博客 95
上一篇: 【复习】javascript 创建对象的方式
下一篇: 【复习】javascript 成员
谭CV
博客等级 码龄9年 73粉丝 85原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值