函数对象:Array,Object (所有typeof出来都是function)
一切对象都继承自Object.prototype
,而一切函数对象都继承自Function.prototype
(且Function.prototype
会最终继承自Object.prototype)
,也就是说普通对象和函数对象的区别是:普通对象直接继承了Object.prototype
,而函数对象在中间还继承了Function.prototype
Object继承得到的方法储存于__proto__属性中,普通对象继承的方法都存于prototype中。
Function的原型链为 Array.prototype→ Function.prototype → Object.prototype → null
Object的原型链为 Object → Function.prototype → Object.prototype → null
//true,其内容都是ƒ () { [native code] }
console.log(Object.proto === Function.prototype);
_proto_
和prototype
的区别??
_proto_:
指向原型对象
prototype:
指向一个有constructor
属性的原型对象。
实现一个原型链继承??
- 使用原型链的方式
function Person(){
}
Person.prototype.hello = “hello”;
Person.prototype.sayHello = function(){
console.log(“hello”);
}
function Child(){
}
Child.prototype = new Person();
Child.prototype.word = “word”;
Child.prototype.sayWord = function(){
console.log(“word”);
}
let m = new Child();
console.log(m.hello);
console.log(m.word);
m.sayHello();
m.sayWord();
分析:
结果如下:
-
使用对象冒充的方式
-
使用call()
-
使用apply()
-
使用混合方式
instanceOf
是如何进行判断对象类型的??
通过判断实例的_proto_
属性与构造函数的prototype
属性是否指向同一个原型对象。
注意1: 实例的_proto_
指向的是构造函数的prototype
属性,与构造函数没有关系。
注意2: 原型上面可能还有会有原型,会沿着原型链继续向上找,找到返回true,反之返回false。
原生实现:
function f1(left,right){
let prototype = right.prototype;
let proto = left.proto;
while(true){
if(proto === prototype)
return true;
if(proto === null)
return false;
//若本次查找无结果,则沿着原型链向上查找
proto = proto.proto;
}
}
var a=[1,2,3];
console.log(f1(a,Array));
//true
- 举一个栗子:
foo instanceof Foo //结果为true,说明foo.proto == Foo.prototype;
但是我们不能轻易说明foo
是Object
的实例,只有以下满足,才是Object
的实例。
foo instanceof Object //结果为true,说明Foo.prototype.proto == Object.prototype
- 想一想:如果A继承B,B继承C,C继承D,那么则呢判断a是由A直接生成的实例还是B直接生成的?
a._proto_.constructor == B
通过constructor
来判断,a由B直接生成
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:前端)
结尾
正式学习前端大概 3 年多了,很早就想整理这个书单了,因为常常会有朋友问,前端该如何学习,学习前端该看哪些书,我就讲讲我学习的道路中看的一些书,虽然整理的书不多,但是每一本都是那种看一本就秒不绝口的感觉。
以下大部分是我看过的,或者说身边的人推荐的书籍,每一本我都有些相关的推荐语,如果你有看到更好的书欢迎推荐呀。
学习前端大概 3 年多了,很早就想整理这个书单了,因为常常会有朋友问,前端该如何学习,学习前端该看哪些书,我就讲讲我学习的道路中看的一些书,虽然整理的书不多,但是每一本都是那种看一本就秒不绝口的感觉。
以下大部分是我看过的,或者说身边的人推荐的书籍,每一本我都有些相关的推荐语,如果你有看到更好的书欢迎推荐呀。