十八、date内置对象常用的方法都有哪些?
1、获取年:getFullYear()
2、获取月:getMonth() ,只获得 (0-11),用该方法时需+1
3、获取日:getDate()
4、获取小时:getHours()
5、获取分钟:getMinutes()
6、获取秒:getSeconds()
7、获取周的某一天(0~6),其中0是星期天,getDay()
十九、场景题,arr1=[1,2,3] arr2=[4,5,6],合并数组1,并且取到新数组的第二个元素
1、arr1.concat(arr2).slice(1,1)
扩展,数组方法整理:
1.1:join(),把数组切割成字符串
var arr = [1, 2, 3, 4, 5];
document.write(arr.join('-')); //输出:1-2-3-4-5
1.2:sort(),
1.2.1对数组进行排序和升序
var arr = [5, 4, 6, 3, 2];
arr.sort(function (a, b) {
return a - b;
})
document.write(arr); //6,5,4,3,2
1.2:sort(),
1.2.1对数组进行排序和升序
var arr = [5, 4, 6, 3, 2];
arr.sort(function (a, b) {
return a - b;
})
document.write(arr); //6,5,4,3,2
1.2.2、对数组进行排序,降序
var arr = [5, 4, 6, 3, 2];
arr.sort(function (a, b) {
return b - a;
})
document.write(arr); //6,5,4,3,2
1.3:push()、向数组末尾添加一个或多个新的元素,并自动更新数组长度。
var arr = [1, 2, 3, 4, 5, 6, 7, 8];
arr.push(11, 12, 13, 14, 15);
document.write(arr); //显示:1,2,3,4,5,6,7,8,11,12,13,14,15
1.4:合并两个数组,把两个数组合并起来
var arr1 = [1, 2, 3, 4];
var arr2 = [5, 6, 7, 8];
var arr1 = arr1.concat(arr2);
document.write(arr1); //输出:1,2,3,4,5,6,7,8
1.5:splice
语法:数组名.splice(a,b); a从哪里(下标)开始删除,b删除几个。
1.6:数组反转
语法:数组名.reverse()
二十、bom常用的4个对象
1、screen,屏幕对象
2、navigator ,浏览器对象
3、history 历史对象
4、location 地址对象
二十一、使用正则表达式清除空的字符串
var reg = /^\s$/g;
reg.test(str)
二十二、js创建对象的几种方式
// js创建对象的几种方式:
// 1、基于Object的方式创建对象
var user = new Object();
user.name = '张三';
user.age = 18;
user.show = function () {
document.write(this.name + ':' + this.age)
}
user.show(); // 张三:18
// 2、使用对象字面量来创建对象
var user = {
name: '张三',
age: 18,
show: function () {
document.write(this.name + ':' + this.age)
}
}
user.show(); // 张三:18
// 3、使用工厂模式创建对象
function creatUser(name, age, address, job) { // 实例对象
var user = new Object();
user.name = name;
user.age = age;
user.address = address;
user.job = job;
user.show = function () {
var str = '姓名:' + user.name + '<br>' + '年龄:' + user.age + '<br>' + '工作:' + user.job + '<br>' + '地址:' +
this
.address;
document.write(str);
}
return user;
}
var user1 = creatUser('张三', 18, '旅游博主', '家里蹲'); // 原型对象
user1.show();
console.log(user1 instanceof creatUser); //false //使用该方式看原型对象与实例对象的关系
// 4、使用构造构造函数来创建对象(大写)
function CreatUser(name, age, address, job) { // 实例对象
this.name = name;
this.age = age;
this.address = address;
this.job = job;
this.show = function () {
var str = '姓名:' + this.name + '<br>' + '年龄:' + this.age + '<br>' + '工作:' + this.job + '<br>' + '地址:' +
this.address;
document.write(str);
}
}
var user1 = new CreatUser('张三', 18, '旅游博主', '家里蹲'); // 原型对象
user1.show();
console.log(user1 instanceof CreatUser); //true //使用该方式看原型对象与实例对象的关系
二十三、哪些操作方式会造成内存泄漏
1、内存泄漏指任何对象在您不再拥有或需要它之后仍然存在。
问:什么是js的垃圾回收机制?
答:垃圾回收机制(GC:Garbage Collection):执行环境负责管理代码执行过程中使用的内存。JS的垃圾回收机制是为了以防内存泄漏,内存泄漏的含义就是当已经不需要某块内存时这块内存还存在着,没有被释放,导致该内存无法被使用,垃圾回收机制就是间歇的不定期的寻找到不再使用的变量,并释放掉它们所指向的内存。
具体的方式:
1. setTimeout 的第一个参数使用字符串而非函数的话,会引发内存泄漏。
2. 闭包
3. 控制台日志
4. 循环(在两个对象彼此引用且彼此保留时,就会产生一个循环)
5、全局变量引起的内存泄露
6、dom清空或删除时,事件未清除导致的内存泄漏
二十四、请说一下什么是jsonp,以及jsonp的原理是什么
1、jsonp就是利用script标签的跨域能力请求资源
2、Jsonp 实现思路:
2.1 全称是 JSON with Padding,请求时通过动态创建一个 Script,在 Script 中发出请求,
2.2 通过这种变通的方式让请求资源可以跨域。
2.3 它不是一个官方协议,是一个约定,约定请求的参数里面如果包含指定的参数(默认是 callback),就说明是一个 JSONP 请求,服务器发现是 JSONP 请求,就会把原来的返回对象变成 JS 代码。
2.4 JS 代码是函数调用的形式,它的函数名是 callback 的值,它的函数的参数就是原来需要返回的结果。
2.5 后台会把函数调用,重新返回给前端。
二十五、请说下什么是本地对象、内置对象、宿主对象
1、本地对象:本地自己创建的变量,对象
2、内置对象:date,array,object,math
3、宿主对象:window、document等
二十六、请简单写一下闭包函数
1、闭包就是能够读取其他函数内部变量的函数。
//闭包(保护里面的变量不被污染)
function fn() {
var num = 0;
return function () {
num++;
console.log(num);
undefined
}
}
var fn1 = fn()
fn1() // 1
fn1() //2
// 对于js函数闭包的理解:
function zs() { // 整个函数体都是闭包。
var sum = '祖母绿宝石戒指'; // 定义的局部变量
return function () { // return 让这个 子函数叛变,并拿到这个函数叛变的 return 的结果。
return sum;
}
}
// console.log(zs) //打印zs整个函数体。
// console.log(zs()) //打印 zs return的函数
var xzs = zs(); //将zs return的函数赋值给一个新的变量 xzs ,这个时候定义了一个匿名函数。
var jz = xzs(); // 拿到xzs return的结果
console.log(jz) // 打印 xzs 将return 的结果赋值给jz的结果
// 对js函数闭包的释放理解。
function fn() {
var x = 100;
return function () { //匿名函数
console.log(x)
// return x;
}
}
console.log(fn()) //打印fn return的一个结果。
var fn1 = fn(); //声明一个变量,将fn()return的结果赋值给变量 fn1
fn1() // 执行fn1()打印的结果为100;
console.log(fn1()); //执行fn1()打印以及return的结果为100,100;
fn() == null //将该闭包函数进行释放,
fn1()
console.log(fn())
console.log(fn1 = null)