若未声明,则都是js的方法
1、indexOf
indexOf(str):默认返回字符串中第一次出现索引位置 的下标,没有则返回-1
indexOf(str,position):返回从position指定的位置开始,字符串第一次出现的索引
lastIndexOf(str):返回在字符串中最后一次出现的索引
例子:
var str1 = "javascript html css";
var position = 5;
console.log(str1.indexOf("s")); //返回4
console.log(str1.indexOf("s",position));//返回17
console.log(str1.lastIndexOf("s"));//18
console.log(str1.lastIndexOf("b"));//没有返回 -1
2、字符串的截取
substr(start, length):start 截取的起始索引 length 截取字符的个数
若只有start, 则截取的是从start 开始到最后字符串
substring(start, end): start 截取的起始索引 end 截取的结束位置. 区间 [start, end)
若start = end, 则未截取到任何字符
var str2 = "javascript html css";
console.log(str2.substr(11, 4));//html
console.log(str2.substring(11, 15));//html
console.log(str2.substring(20, 22));//不存在返回空
3、match(str):以数组的形式返回,数组中第一个和str匹配的字符串,若不存在则返回null
var str3 = "javascript html css";
console.log(str3.match("html")); //["html", index: 11, input: "javascript html css"]
console.log(str3.match("hm")); //null
console.log(str3.match("html"));//["html", index: 11, input: "javascript html css"]
4、search(str):返回第一次和str相同的起始位置的索引,若不存在,返回-1
var str4 = "javascript html css";
console.log(str4.search("html"));//11
console.log(str4.search("hm"));//-1
5、 jQuery.param():函数用于将一个js数组或对象 序列化为字符串值,
将jQuery对象按照name/value 或者key/value 序列化为url参数,用& 连接,以便于用url查询字符串或ajax请求
语法 $.param(object, trad)
object: 必须。规定要序列化的数组或对象
trad:可选,boolean,指定是否使用参数序列化的传统样式
var v1 = $.param( true );// 结果:""
var v2 = $.param( 100 );//""
var v3 = $.param( 12.34 );//""
var v4 = $.param( "" );//""
var v5 = $.param(function () {//""
return 18;
} );
var v6 = $.param(/\\d+/);//""
var v7 = $.param( new Date() );//""
var v8 = $.param( null ); //报错
var v9 = $.param( undefined );//报错
// 字符串将被看做数组
var v10 = $.param("name");
console.log(v10);// 0=n&1=a&2=m&3=e
var v11 = $.param({ name: "zhangsan", age: 18});
console.log(v11);//name=zhangsan&age=18
var array = [
{ name: "name", value: "张三"},
{ name: "age", value: 18, extra: "不可忽略该属性" },
{ name: "grade" }, //没有value属性,则属性为undefined ,将被转为空字符串
{ name: "orderId", value: 2},
{ name: "orderId", value: 3},
];
var v12 = $.param( array );
console.log( v12 );//name=%E5%BC%A0%E4%B8%89&age=18&grade=&orderId=2&orderId=3
出现这种结果的原因是:jquery将数组的每个元素视作对象,并调用其name和value属性
由于有些元素没有name/value属性,所以为undefined,并被转为字符串“undefined”
6、instanceof 和 typeof
instanceof 运算符 判断一个变量是否是某个对象(类)的实例,返回值是boolean类型
var str6 = new String("abfsd");
console.log(str6 instanceof String);//true
一般来说只要使用构造函数创建的对象才会返回true,否则返回false,但是数组是个例外,都会返回true
typeof:运算符 返回一个字符串,用于说明原来的类型,他的返回值有以下可能
number、boolean, string,function,object,undefined
var str6 = new String("abfsd");
console.log(str6 instanceof String);//true
var str = new String("sdfjdf"); //
var strTeo = "jfedsjk";
console.log(typeof str);//object
console.log(typeof strTeo);//string
7、prototype 向对象添加属性
function employee(name, job, born){
this.name = name;
this.job = job;
this.born = born;
}
var bill = new employee("bill", "engineer", 1956);
employee.prototype.salary = null;
bill.salary = 1223;
console.log((bill.salary));//1223
8、push 向数组末尾添加数据,并返回数组的长度
pop:删除数组末尾的数,返回被删除的数据
unshift:向数组开头添加数据,并返回数组长度
shift:删除数组开头的数据,返回被删除的数据
var oldArr = [1,2,3];
console.log(oldArr.push(4, [5,6])); //返回数组长度5,在这里[5,6]被当做一个元素计算
console.log(oldArr);//[1,2,3, 4, [5,6]]
console.log(oldArr.pop());//删除[5, 6]
console.log(oldArr);//[1, 2, 3, 4]
console.log(oldArr.unshift(0,[8,9]));//返回数组长度为6
console.log(oldArr);//[0, Array[2], 1, 2, 3, 4]
console.log(oldArr.shift());//删除数组开头的数据0
console.log(oldArr);//[ Array[2], 1, 2, 3, 4]
9、concat():用于连接两个或多个数组,基于当前数组,创建一个 新数组并返回该数组
var a = [1,2,3];
console.log(a.concat(4,5));// [1, 2, 3, 4, 5]
var arr9 = new Array("Grorge", "John", "Thoms");
var arr9_1 = new Array("James", "Adrew","Martin");
console.log(arr9.concat(arr9_1));//["Grorge", "John", "Thoms", "James", "Adrew", "Martin"]
10、js的 slice(start,end):基于当前数组获取指定区域元素,并返回一个从 start 到 end 的新数组
start 必须,规定从何处开始选取,如果是负数,那么规定从数组尾部开始算起,-1 指最后一个元素,
-2 指倒数第二个元素,以此类推
end:可选,规定从何处结束选取,如果没有指定该参数,那么切分的数组包含从start开始到数组结束的所有元素
如果是负数,则规定是从数组尾部开始算起。
splice(start, deleteCnt, args):start:开始删除的下标,deleteCnt 表示从开始下标要删除的元素个数
args表示用来替换删除掉的那些元素 返回删除的元素
start为负数 表示从数组右边结尾处开始计算
若deleteCnt 不存在,表示删除start以后的全部元素,为负数表示不删除元素
oldArr2.splice(3,1) 删除从下标为3开始的一个数据,并返回删除的数据
var newData = oldArr2.splice(2, 0, "计算机"); //在第2个后面添加计算机,0表示一个也不删除,要插入数据了
newData 中的数据为空,oldArr2 中在第2个后面添加计算机。
var oldArr2 = ["张三", "男", 46, "演员"];
console.log(oldArr2.splice()) ;//返回空的字符串,不做任何操作
console.log(oldArr2.splice(3,1)) ;//删除从下标为3开始的一个数据并返回删除的数据:演员
console.log(oldArr2) ;//["张三", "男", 46]
var newData = oldArr2.splice(2, 0, "计算机"); //在第二个后面添加计算机
console.log( oldArr2) ;//["张三", "男", "计算机", 46, "演员"]
console.log( newData) ;//[]
11、 jQuery.hasClass()方法检查被选元素是否包含指定的class,返回true或false
$("p").hasClass("intro"); 检查p元素是否包含intro 类
js 的 trim() 去除字符串左右两端的空格,但是不能删除字符串中间的空格
var blank1 = " 123 235 4 55 485 ";
console.log(blank1.trim("/(^\s*)|(\s*$)/g",""));//123 235 4 55 485 去掉字符串前后空格,中间的空格无法删除
console.log(blank1.trim("/\s+/g",""));//123 235 4 55 485 去掉字符串前面的空格
12、attr(attribute, value)方法设置或返回被选元素的属性值
attr(attribute):获得元素的属性值
attr(attribute, value):为元素添加属性值
13、replace():方法用于在字符串中用一些字符替换另一些字符或者替换一个与正则表达式匹配的字符串
replace(pattern, replacement):
replaceAll():实现替换全部指定字符串, g = global 全局 m = multiLine 多行
String.prototype.replaceAll = function (s1,s2){
return this.replace(new RegExp(s1, "gm"), s2);
}
var s1 = "abcdefg", s2 = "12",s3;
var s3 = replaceAll(s1,s2);
console.log(s1.replace(new RegExp(s1, "gm"), "1"));
14、 终止冒泡事件,兼容各个浏览器
事件冒泡:从下级元素到上级元素
捕获事件:从上级元素到下级元素
if(event.stopPropagation()) {
event.stopPropagation(); //for mozzilla and opera
} else {
window.event.cancelBubble = true;//for IE
}