logo头像
Snippet 博客主题

日常记录

本文于1537天之前发表,文中内容可能已经过时。

关于new的过程

1
2
3
4
5
6
7
8
9
10
11
12
13
14
function Father(name){
this.name=name;
}
Father.prototype={
getName:function(){
console.log(this.name)
}
}
var son=new Father('张三');
//new 分为3个步骤
//var son={}
//Father.apply(son,"张三");
//son.__proto__=Father.prototype;

关于apply和call的作用

1
2
3
4
5
//apply和call都是用来改变this的指向
//比如son2如果想要有一个getName的方法,但是不想重写可以用apply或者call的方法
//call和apply都会遍历一次函数,然后执行一次
var son2={name:"李四"};
son.getName.apply(son2);

apply的第二个参数对象只要有length属性就可以了

  类数组的定义就是有length属性就可以了
    1 . 类数组怎么变成数组

1
2
3
4
5
6
7
8
var arrayLike={
length:2,
name:'张三'
}
console.log(Array.isArray(arrayLike)) //false
//可以将带有length的对象转换为数组
var arrFunc1 = Array.prototype.slice.call(arrayLike);
console.log(Array.isArray(arrFunc1)) //true