js原型和原型链的理解

什么是原型?
原型是构造函数构造出对象的共有祖先,通过该构造函数构造出的对象,都可以继承该原型的属性和方法。
如何获取原型方法?
1.通过对象.__proto__获取。
2.通过构造函数的prototype属性拿到原型。
3.原型链:原型对象也是有原型的。通过__proto__属性进行查看,以此类推,就形成一个链条,类似于作用域链,在查找对象的某个方法或属性时,若自身有就用自身的,如果没有就沿着原型链往上面走。直到最顶端没有,就为null。

一.如何获取原型对象

	// 1.通过对象.__proto__获取;
     let  student={
            name:"马冬梅",
        }
        // 给对象的原型对象添加一个方法
        student.__proto__.say=function(){
            console.log("夏洛,别走!");
        }
        // 这个对象也可以调用
        student.say();

在这里插入图片描述

//  2.通过构造函数创建的对象,都可以通过构造函数的prototype属性拿到原型对象。从而获取(继承)原型对象的属性和方法。
 function Student(){
 }
let stu =  new Student();

Student.prototype.say=function(){
    console.log("夏洛,滚!");
}
stu.say();

在这里插入图片描述

二.原型对象在实际项目中和有什么用?

比如我们想扩展一些内置对象或者自定义对象的属性和方法

// 例如我们想通过调用Date对象的formatData方法,输出“年-月-日”形式。
// 就可以通过给Date对象的原型拓展方法实现
 Date.prototype.formatData=function(){
   let Y = this.getFullYear() + '-';
   let M = (this.getMonth() + 1 < 10 ? '0' + (this.getMonth() + 1) : this.getMonth() + 1) + '-';
   let D = (this.getDate() + 1 < 10 ? '0' + (this.getDate()) : this.getDate());
   return  Y + M + D; 
 }
let date = new Date();
console.log(date.formatData());

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值