javascript相关知识点

一、关于setTimeout

console.log("first")

setTimeout(function() {

console.log("setTimeout")

}, 0);

new Promise(function executor(resolve) {

for( var i=0 ; i<10000 ; i++ ) {

    i == 9999 && resolve();

}

}).then(function() {

console.log("then")

});

console.log("last");

写一下输出顺序:

first

last

then

setTimeout

 

 

二、es5继承

https://www.cnblogs.com/annika/p/9073572.html

 

三、写出下面几段代码的打印内容

(1)

var x = 10;

function fn(){

  console.log(x);

}

function show(f){

  var x = 20;

  f();

}

show(fn);

 

答案:10

 

(2)

var fn = function(){

  console.log(fn)

}

fn();

var obj = {

  fn2:function(){

    console.log(fn2);

  }

}

obj.fn2();

 

答案

fn = function(){

  console.log(fn)

}

console.log(fn2);报错

理解:默认指向window,而全局中没有fn2这个方法,所以报错。改成console.log(this.fn2)可以打印出fn2函数

 

(3)

var name = "The Window";

var object = {

  name:"My Object",

  getNameFunc:function(){

    return function(){

      return this.name;

    }

  }

}

console.log(object.getNameFunc()());

 

答案:The Window

函数内,this默认指向window

改成:

getNameFunc:function(){

    return this.name;

  }

则打印 My Object

 

(4)

var A = function(){}

A.prototype.n = 1;

var b = new A();

A.prototype = {

  n:2,

  m:3

}

var c = new A();

console.log(b.n,b.m,c.n,c.m);

 

答案:1 undefined 2 3

理解:A.prototype.n = 1;时,开辟一个内存块,该内存块内容为n=1,A.prototype指向该内存块。var b = new A();时,b的隐式原型链指向该内存块。

 

A.prototype = {

  n:2,

  m:3

}时,开辟一个内存块,该内存块内容为n:2,m:3,A.prototype指向该内存块。var c = new A();时,c的隐式原型链指向该内存块。

 

 

 

(5)

var F = function(){};

Object.prototytotype.a = function()

{

  console.log('a');

}

Function.prototytotype.b = function()

{

 console.log('b');

}

var f = new F();

f.a();

f.b();

F.a();

F.b();

 

答案:

f.a(); 打印a

f.b();报错

F.a(); 打印a

F.b();打印b

理解:原型链最终指向object
 

 

四、promise几种状态

promise对象有三种状态:pending(进行中) 、Resolved(已经完成)和Rejected(已失败)

 

五、null,undefined

console.log(null==undefined)

返回结果为true

 

ECMAScript认为undefined是从null派生出来的,所以把它们定义为相等的。

但是,如果在一些情况下,我们一定要区分这两个值,那应该怎么办呢?

可以使用下面的两种方法。

 

alert(null === undefined); //output "false"  

alert(typeof null == typeof undefined); //output "false"  

let foo = undefined

let foo1 = null

console.log(typeof foo)  //undefined

console.log(typeof foo1) //object

 

六、数组的方法

concat() 连接两个或更多的数组,并返回结果

 

join() 把数组的所有元素放入一个字符串。元素通过指定的分隔符进行分隔

 

pop() 删除并返回数组的最后一个元素

 

push() 向数组的末尾添加一个或更多元素,并返回新的长度

 

unshift() 向数组的开头添加一个或更多元素,并返回新的长度

 

reverse() 颠倒数组中元素的顺序

 

shift() 删除并返回数组的第一个元素

 

slice() 从某个已有的数组返回选定的元素

 

sort() 对数组的元素进行排序  参数必须是个函数 arr_a.sort(function(a,b){return a-b})

 

splice() 插入 删除  替换  数组的元素。

 

toString() 把数组转换为字符串,并返回结果

 

七、数组插入数据的方法

push() 向数组的末尾添加一个或更多元素,并返回新的长度

 

unshift() 向数组的开头添加一个或更多元素,并返回新的长度

 

splice() 插入 删除  替换  数组的元素。

 

八、如何判断是否是一个数组

一、用 instanceof

instanceof是如何判断的?

表达式: A instanceof B

如果B函数的显式原型对象在A对象的原型链上, 返回true, 否则返回false

二、Array.isArray(value)  ES5新增方法

三、Object.prototype.toString.call(vaule) == “[object Array]”

四、Array.prototype.isPrototypeOf(value)

 

九、for in,for of 区别

https://blog.csdn.net/q5706503/article/details/82950764

 

十、js的循环

https://blog.csdn.net/qq_41899174/article/details/82797089

http://www.cnblogs.com/baiyunke/p/7821299.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值