js原型链的详细介绍

本文深入探讨JavaScript的原型链机制,介绍了如何通过prototype创建对象,以及实例对象、构造函数和原型对象之间的关系。通过原型链,实现了不同实例对象共享原型方法。同时,通过constructor属性判断对象是否为构造函数的直接实例,以及如何通过原型链查找属性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.创造对象的方法:

//第一种方式:字面量
var o1 ={name:'o1'};
var o2=new Object({name:'o2'});
//第二种方式:通过构造函数
var M=function(name){this.name=name};
var o3=new M('o3')
//第三种方式:Object.create
var p={name:'p'}
var o4=Object.create(p)

在这里插入图片描述
M.prototype等于原型对象,原型对象是通过constructor关联构造函数的
在这里插入图片描述

实例对象的_proto_等于构造函数的prototype
在这里插入图片描述
通过原型链的方式找到原型对象,原型对象的方法被不同的实例共有

M.prototype.say=function(){
	console.log('say hi')
}
var o5 =new M('o5')

在这里插入图片描述
构造函数的M._proto_等于Function.prototype:M的构造函数是Function,也可以理解成M这个普通函数是Function这个构造函数的实例化。
在这里插入图片描述
实例对象的_proto_和构造函数的prototype是引用的同一个地址
在这里插入图片描述
o3是构造函数的实例化,也是构造函数的原型的实例化,所以判断是不是直接的实例化,要用constractor
在这里插入图片描述
在这里插入图片描述

var new2=function(func){
    var o=Object.create(func.prototype);
    var k=func(o);
    if(typeof k==='Object'){
        return k
    }else{
        return o
    }
}

在这里插入图片描述
o4是通过原型链来找name属性的本身是个新的对象p,所以o4是空object
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值