JavaScript原型,原型链 ? 有什么特点?

在JavaScript中,原型(prototype)和原型链是实现对象间继承的主要机制。

原型(prototype)是JavaScript的一个内部属性,是一个指针或者链接,指向创建它的构造函数的原型对象。当我们在对象上调用一个方法或属性,JavaScript会首先在对象本身查找,如果没有找到,它会沿着原型链向上查找,直到找到为止。

例如:

function Person(name) {
    this.name = name;
}

Person.prototype.sayName = function() {
    console.log(this.name);
}

let person1 = new Person('Tom');
person1.sayName(); // 输出:Tom

在这个例子中,sayName方法是定义在Person的原型上的。当我们在person1对象上调用sayName方法时,JavaScript会首先在person1对象本身查找,没有找到,然后它会在Person的原型上查找,找到了就调用。

原型链是由原型链接组成的,形成了一条链式结构。当查找对象属性时,JavaScript会沿着原型链向上查找,直到找到相应的属性或到达原型链的末端。原型链的尽头通常是Object.prototype,它是所有对象默认的原型。

原型和原型链的特点主要包括:

  1. 所有的对象都有原型,所有的原型都链接到原型链上。
  2. 当查找对象属性时,如果对象本身没有这个属性,那么JavaScript会沿着原型链向上查找,直到找到为止。
  3. 当我们在对象上调用一个方法时,这个方法实际上可能是定义在原型上的,这可以实现方法的共享,节省内存。

需要注意的是,虽然原型和原型链为我们提供了强大的继承机制,但也需要小心处理。如果我们在原型上定义了可变的数据(如数组或对象),那么所有的实例都会共享这个数据,一旦有一个实例修改了这个数据,其他实例的这个数据也会被修改。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值