Web 文档 MDN:https://developer.mozilla.org/zh-CN/
面向对象:继承、封装、多态(抽象性)
js不是面向对象的语言,但可以模拟面向对象的思想。
创建对象:
var a=new object();
构造函数名字大写,在当前对象方法中,可以用this代替当前对象。
function Person(name,age) {
this.name=name;
this.age=age;
this.ff=functi.on() {
console.log("aaa");
};
}
var a=new Person("小明",20);
a.ff();
instanceof 判断该对象是否属于该类型。
用字面量的方式创建对象:var obj={};
var a1={
name:"小明",
age:20,
eat:function (){
console.log("吃饭");
}
};
a1.eat();
var a2={}; //空对象
a2.eat=function() {
console.log("吃饭");
};
obj.name=“小白”; 相当于obj[“name”]=“小白”;
obj.eat(); 相当于obj[“eat”] ();
遍历对象不能用for循环,只能用for-in循环,并且不能用Person.key输出
var Person={
name:"小明",
age:20
};
for(var key in Person) {
console.log(Person[key]);
}
引用类型object的对象在堆中存储,地址在栈中存储。
person的指向变化,但p没有变。
function Person(name, age) {
this.name = name;
this.age = age;
}
function f1(person) {
person.name = "小明";
person = new Person("小花", 17);
}
var p = new Person("小红", 18);
console.log(p.name);
f1(p);
console.log(p.age);
//小红 小明
内置对象:Math,String,Date,Array,Object
Math 的所有属性和方法都是静态的。(注意M大写)
Math.pi—π
Math.ceil()-----向上取整
Math.floor()-----向下取整
Math.max()-----最大值
Math.pow()-----一个数字的几次幂
Math.random()-----随机数
Math.abs() -----绝对值
JSON格式的数据都是键值对,是格式化好的一组字符串数据,属性用 “ ” 括起来。
随机十六进制颜色:
function f1() {
var str="#";
var arr=["1","2","3","4","5","6","7","8","9","a","b","c","d","e","f","0"];
for (i=0;i<6;i++){
var num=parseInt(Math.random()*16);
str+=arr[num];
}
return str;
}
window.function(){
//在文档中通过id属性查找这个元素,并设置颜色
document.getElementById("dd").style.backgroundColor=f1();
};
获取当前时间的函数:
function getDate(sj) {
var year = sj.getFullYear();
var month = sj.getMonth() + 1;
var date = sj.getDate();
var hour = sj.getHours();
var minute = sj.getMinutes();
var second = sj.getSeconds();
month = month < 10 ? "0" + month : month;
date = date < 10 ? "0" + date : date;
hour = hour < 10 ? "0" + hour : hour;
minute = minute < 10 ? "0" + minute : minute;
second = second < 10 ? "0" + second : second;
return year + "年" + month + "月" + date + "日 " + hour + ":"
+ minute + ":" + second;
}
var dt = new Date();
console.log(getDate(dt));
js没有字符类型。字符串可以通过索引访问字符串中的某个值,不能只能读。
字符串的属性:
str.concat(字符串1,字符串2) -----字符串拼接函数
str.fromCharCode() ------返回ASCII码对应值
str.indexOf(要找的字符串,从某个位置开始的索引) -----返回的是字符串索引值,没找到返回-1,从左往右,lastIndexOf从右往左
str.replace(原字符串,新字符串2) -----替换字符
str.slice(2,5) -----提取从2到5的字符串
str.split(要取代的字符串,切割后留下的字符串) -----切割字符串
str.toLocalLowerCase() / str.toLowerCase() -----大写字符转小写
str.toLocalUpperCase() / str.toUpperCase() -----小写字符转大写
str.trim -----删掉字符串两端的空格
判断字符串中每个字符出现的次数:
var str = "sgwdgwjHJGHfikewhrehHHHHjh";
str = str.toLocaleLowerCase();
var obj = {}; //创建一个空对象,把字母作为键,把次数作为值
for (var i = 0; i < str.length; i++) {
var key = str[i]; //每个字母
if (obj[key]) {
obj[key]++;
} else {
// 如果对象中没有字母,把字母加到对象中
obj[key] = 1;
}
}
for (var key in obj){
console.log(key+"出现了"+obj[key]+"次");
}
Array.concat(数组1,数组2…) -----组合成一个新数组
Array.every(函数) -----返回值是布尔类型,函数作为参数使用,分别是当前的元素值,索引,原来的数组。只有当条件都满足时,才会返回true。
Array.filter(函数) ----返回数组中都符合条件的每一个元素,组成数组。
var arr=[20,30,4,5,6,77,0,99,0,3,50];
var newarr=arr.filter(function(ele){
return ele<20;
});
console.log(newarr);
Array.push() -----把值追加到数组最后,返回值是最后的数组
Array.pop() -----删除数组最后一个,返回该值
Array.shift() ----删除数组中第一个元素,返回该值
Array.unshift() ----向数组第一个元素前插入一个值
Array.forEach() -----遍历数组,相当于for循环
Array.join(字符串1,字符串2) -----各字符串中增加字符
Array.map(函数) -----数组中的每个元素都执行完该函数后返回新数组
Array.reverse() -----反转数组
Array.sort() -----排序,可能不稳定
基本包装类型: 本身是基本类型,但该变量调用属性和方法,就不再是基本类型,那这个变量成为了基本包装对象。
var num=10;
var num1=Number("10"); ----没有new,类型转换
var num2=new Number("10"); ----基本包装类型