首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

JavaScript .prototype如何工作?

JavaScript .prototype 是一个非常重要的概念,它是原型继承的基础。在 JavaScript 中,每个对象都有一个原型对象,当我们试图访问一个对象的属性时,如果对象本身没有这个属性,JavaScript 会查找对象的原型链,直到找到该属性或者到达原型链的末端。

.prototype 的工作原理如下:

  1. 每个 JavaScript 函数都有一个 .prototype 属性,这个属性是一个对象。
  2. 当我们使用 new 关键字创建一个新对象时,新对象的内部 [Prototype] 属性会指向构造函数的 .prototype 对象。
  3. 当我们尝试访问新对象的属性时,如果新对象本身没有这个属性,JavaScript 会查找新对象的原型链,直到找到该属性或者到达原型链的末端。

举个例子:

代码语言:javascript
复制
function Person(name, age) {
  this.name = name;
  this.age = age;
}

Person.prototype.sayHello = function() {
  console.log('Hello, my name is ' + this.name);
}

const person1 = new Person('Alice', 30);
person1.sayHello(); // 输出 "Hello, my name is Alice"

在这个例子中,我们定义了一个 Person 构造函数,并且为 Person.prototype 添加了一个 sayHello 方法。然后我们使用 new 关键字创建了一个新的 Person 对象 person1,person1 的内部 [Prototype] 属性指向了 Person.prototype 对象。当我们尝试访问 person1 的 sayHello 方法时,JavaScript 会在 person1 的原型链中找到该方法并执行它。

总结一下,.prototype 是 JavaScript 原型继承的基础,它可以让我们在不修改原型对象的情况下,为已经创建的对象添加新的方法和属性。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

JavaScript之面向对象学习七(动态原型模式、寄生构造函数模式、稳妥构造函数模式创建自定义类型)

一、动态原型模式 在面向对象学习六中的随笔中,了解到组合构造函数模式和原型模式创建的自定义类型可能最完善的!但是人无完人,代码亦是如此! 有其他oo语言经验的开发人员在看到独立的构造函数和原型时,很可能会感到非常困惑。因为对象在其他oo语言中往往是封装在一块的,而构造函数确是和原型分开的,所以并没有真正意义上的封装,所以动态原型模式正是致力与解决这一问题的一个方案! 动态原型模式将所有的信息都封装在构造函数中(包括原型和实例属性),通过在构造函数中实例化原型(仅在必要的情况下)实现封装,又保持了同时使用构造

010

JS面向对象一:MVC的面向对象封装

Namespace 命名空间 允许开发人员在一个独特, 应用相关的名字的名称下捆绑所有功能的容器。 Class 类 定义对象的特征。它是对象的属性和方法的模板定义. Object 对象 类的一个实例。 Property 属性 对象的特征,比如颜色。 Method 方法 对象的能力,比如行走。 Constructor 构造函数 对象初始化的瞬间, 被调用的方法. 通常它的名字与包含它的类一致. 例如Object(),String(),Number() Inheritance 继承 一个类可以继承另一个类的特征。 Encapsulation 封装 一种把数据和相关的方法绑定在一起使用的方法. Abstraction 抽象 结合复杂的继承,方法,属性的对象能够模拟现实的模型。 Polymorphism 多态 多意为‘许多’,态意为‘形态’。不同类可以定义相同的方法或属性。

02
领券