JS之原型链

对象

普通对象

最普通的对象:有_proto_属性(指向其原型链),没有prototype属性。
原型对象:person.prototype原型对象还有constructor属性(指向构造函数对象)

function f1(){};
var f2=function(){};
var f3=function("n1","n2","return n1+n2");

console.log(typeof f1);//function
console.log(typeof f2);//function
console.log(typeof f3);//function
var o1=new f1();
var o2={};
var o3=new Object();

console.log(typeof o1);//Object
console.log(typeof o2);//Object
console.log(typeof o3);//Object

函数对象

凡是通过new Function()创建的都是函数对象。
拥有_proto_、prototype属性(指向原型对象)
Function、Object、Array、Date、String、自定义函数
※Function.prototype既是原型对象又是函数对象
区分function和Function

原型对象

每创建一个函数都会有一个prototype属性,这个属性是一个指针,指向一个对象。原型对象是包含所有实例共享的属性和方法。

dog1._proto_._proto_===Object.prototype
Dog._prototype_._proto_===Object.prototype
Dog.prototype.constructor===Dog;
获取对象原型
dog1._proto_//不推荐
Object.getPrototypeOf(dog1)===Dog.prototype//推荐

原型链

原型链是实现继承的主要方法。
在这里插入图片描述

instanceof 原理

instanceof是判断实例对象的_proto_和生成该实例的构造函数的prototype是不是引用的同一个地址。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值