JavaScript原型和原型链,以及__proto__和prototype

十八、组件————温开水的复习笔记_咕噜一口温开水的博客-CSDN博客icon-default.png?t=M0H8https://blog.csdn.net/qq_47286790/article/details/122893790JavaScript中万物皆为对象(函数是对象、原型也是对象...)

白嫖来一张图帮助我理解:

JavaScript原型关系

(一)既然万物都是对象,那么怎么创建创建对象呢?------对象的分类

按照创建对象的不同方法来分类:

①普通对象

②函数对象

(二)对比两类对象来帮助理解

普通对象 函数对象(构造函数)

var obj={

        x:1,

        y:2

}

function f(name,age,gender){

        this.name=name;

        this.age=age;

        this.gender=gender

}

var k=new f('小明',18,'男')

当Obj一创建成功,就形成如图结构,在这个对象中,在上面的代码中我们没有为_proto_指定它的指向,所以为默认值。通过对象字面量构造出的对象,其[[prototype]]指向Object.prototype

通过new操作符调用的函数就是构造函数。k是f()的实例,实例的构造函数属性constructor指向构造函数。由构造函数构造的对象,其[[prototype]]指向其构造函数的prototype属性指向的对象。每个函数都有一个prototype属性,其所指向的对象带有constructor属性,这一属性指向函数自身。
 

较复杂的例子:

var a= {
        x: 1,
        add: function (z) {
        return this.x + this.y + z
        }
};
var b = {
        y: 2,
        __proto__: a
};

var c = {
        y: 3,
        __proto__: a
};

b.add(4); // 7

较复杂的例子:

function F(y){
        this.y = y ;
}

Foo.prototype.x = 1;

Foo.prototype.add = function(z){
        return this.x+this.y+z;
};

var b = new F(1);

var c = new F(2);

alert(b.add(2)); //4


 

例子图解

原文链接:https://blog.csdn.net/dovlie/article/details/76228994

图片原文链接:

http://www.qdfuns.com/notes.php?mod=view&u=17398&id=6962d01d88c6b73ea606662fd397b6f6

参考博客:

[1] JavaScript深入之从原型到原型链 - SegmentFault 思否https://segmentfault.com/a/1190000008959943

[2]js原型和原型链,以及__proto__、prototype属性_赶路人儿-CSDN博客https://blog.csdn.net/liuxiao723846/article/details/81984357

[3]js原型和原型链,以及__proto__、prototype属性 - ryelqy - 博客园 (cnblogs.com)https://www.cnblogs.com/ryelqy/p/10997332.html

[4]图解js原型对象、原型链_dovlie的博客-CSDN博客_js原型对象https://blog.csdn.net/dovlie/article/details/76228994

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值