javascript常用操作
Easul Lv6

ajax传输数据到后台丢失一部分

数据中可能有类似于&的字符,这个是用于连接请求参数的
普通数据中有这个字符,则数据被截断,所以会丢失数据
那么发送之前对url进行编码即可

折叠代码块JAVASCRIPT 复制代码
1
2
3
4
// js端进行数据的URL编码
encodeURIComponent(data)
// js端进行数据的URL解码
decodeURIComponent(data)

JavaScript数据存储

两种方式(都只能存储字符串)

  • localStorage:不清除浏览器,则会一直存储在浏览器.持久化存储
  • sessionStorage:本地会话存储,关闭页面或刷新都会导致失效

存储

折叠代码块JAVASCRIPT 复制代码
1
2
3
localStorage.name = 'vanida';
localStorage["name"]='vanida'
localStorage.setItem("name", 'vanida');

获取

折叠代码块JAVASCRIPT 复制代码
1
2
3
var name = localStorage.name;
var name = localStorage["name"];
var name = localStorage.getItem("name");

清除

折叠代码块JAVASCRIPT 复制代码
1
2
localStorage.removeItem("name");
localStorage.name='';

清除所有值

折叠代码块JAVASCRIPT 复制代码
1
localStorage.clear() 

因为只能存字符串,如果有JSON数据
存的时候使用localStorage.setItem("name", JSON.stringify(jsonData))
取的时候使用JSON.parse(localStorage.getItem("name"))

参考

一些常用操作列举

折叠代码块JAVASCRIPT 复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
// 声明
var a; // 声明后未定义就是undefined

// 获取数据类型
console.log(type("adsf"));// 可以用于输出该数据的类型string,boolean,number

// 数组定义
var arr1 = new Array();
var arr = [];// 等同于上边
var arr1 = new Array(5);// 定义长度为5的数组
var arr1 = new Array(5, 6, 7);// 数组中顺便初始化5, 6, 7

// 函数
function show(x, y) {
console.log(x);
console.log(y);
console.log(arguments);
}
// 细节1
show(1, 2, 3, 4);// 传四个,x,y可以接收两个,剩下的可以通过默认的数组arguments来接收
// 细节2
var result = show;
/*
定义了一个函数,内存中就有了一个函数对象,并维护一个arguments数组(用来接收参数)。用函数名来指向这个函数对象。
函数名()就调用了这个对象,var result=函数名,相当于result也指向这个函数对象
*/
console.log(result);// 直接输出,就相当于将这个函数对象转成字符串打印出来
// 细节3
alert(show(1, 2));// 将该函数执行完之后,没有返回值,所以弹出undefined

// 动态函数:js内置对象Function。因为传入的内容未知,是动态。用的不多。
var add = new Function("x, y", "var sum; sum = x + y; return sum;");
console.log(add(4, 8));

// 匿名函数,用的很多,例如事件的处理。
var myShow = function(a, b) {
return a + b;
}

// 全局变量:scrpit中定义的变量在整个标签或者页面都有效。
for (var x = 0; x < 3; x++) {

}
console.log(x);// 输出3
for (var x = 0; x < 3; x++) {// 这里如果直接使用x,就是3,如果var x = 0;相当于对x重新赋值

}

// 局部变量:函数中定义的是局部变量
function doSth() {
var sp = 6;
}
console.log(sp);// 访问不到,显示未定义。因为作用域在函数中。外部没有声明

// Object对象的方法:toString(), valueOf()
console.log(doSth.toString());// 将函数转为字符串输出。可以不写toString。数组直接输出,也会调用toString()
console.log(doSth.valueOf());// 和直接输出一样。

// 省去写 对象.方法 中的对象
with(date) {
var first = getFullYear();
var second = getMonth();
}

// 增强for循环遍历
for(var in obj) {
console.log(var)
}

// 全局方法
parseInt(str) // 字符串转int
isNan(var) // 判断是不是数字

// 原型:该对象的一个原有描述。
// objectName.prototype就可以返回对象的原型,可以用来扩展其功能使对象使用其新功能
String.prototype.len = 199;// 给String的原型对象中添加一个属性值.
// 给String的原型对象添加一个方法.新对象可以直接调用该方法.这里使用匿名函数
String.prototype.trim = function () {
var start, end;
start = 0;
end = this.length - 1;
while (start <= end && this.charAt(start) == ' ') {
start++;
}
while (start <= end && this.charAt(end) == ' ') {
end--;
}
return this.substring(start, end + 1);
}
// 也可以将原型中已有的方法进行重写
String.prototype.toString = function() {}

// Javascript自定义对象,使用函数来模拟对象.首字母大写主要是为了区分JS的函数和对象
// 1 动态的属性和方法赋值.类没有创建该属性和方法也可以.
function Person() {
alert();
}
var p = new Person();
p.name = "123";// 动态添加属性
// 动态添加方法
p.show = function() {
alert(this.name);
}
p.show();
// 2 常规创建模式
function Person(name, age) {
this.name = name;
this.name = age;
this.setName = function(name) {
this.name = name;
}
this.getName = function() {
return this.name;
}
}
// Person.prototype也可以用来扩展方法.
var p = new Person();
p.setName("charf");
console.log(p.getName());
// 3 键值对形式定义.定义一个实体
var person = {
// 定义成员,键也可以不加引号 name:"小明"
"name": "小明",
"age": 38,
"getName": function () {
return this.name;
}
}
console.log(person.getName());
// person.x就是person对象中有一个x名称的属性
console.log(person.name);// 对象调用属性的方式:对象名.成员名;对象名["成员名"]
console.log(person["name"]);
for(x in p) {
console.log(x);// 输出对象的所有属性名
console.log(p[x]);// 获取对象的所有属性值
}

// 名称定义
var oPerson = "";// 对象类型
var bFlag = true;// 布尔类型
var iNumber = 1;// 数字类型
var sLine = "1";// 字符串类型

// 复杂的对象创建
var myMap = {
names:[{name1:"e"}, {age:12}]
}
console.log(myMap.names[0].name1);// myMap的names键的第一个元素的name1键

// window:浏览器对象

// 对于表格排序,可以获取每一行的表格对象,然后排序,把最小的那个表格对象append到父容器末尾。
var parent = document.getElementById("test");
var childNodes = parent.children[0];
parent.appendChild(childNodes);// 直接把本对象的位置进行更换

// 获取当前DOM已有`<script>`标签对象
document.scripts

类的创建

参考这篇博客

 评论
来发评论吧~
Powered By Valine
v1.5.2