JS原型prototype和__proto__用法实例分析

来讲一下JS原型prototype和__proto__用法的攻略。

1. 前置知识

在开始之前,需要了解一些前置知识:

  • JavaScript中所有对象的原型都是 Object.prototype,它包含了常用的方法如 toString()valueOf() 等。
  • 每个 JavaScript 对象都有一个 __proto__ 属性,指向它的原型对象。这个属性是非标准的,但是现代浏览器都支持它。
  • 每个函数(除了箭头函数)都有一个 prototype 属性,它指向一个对象。这个对象就是函数的原型对象。

2. __proto__

__proto__ 指向对象的原型对象,它可以用来访问对象原型上的属性和方法。比如以下示例:

let p = {name: 'Leo'};
let o = {age: 18};
o.__proto__ = p;

console.log(o.name);  // 'Leo'

上面示例中,我们创建了一个 p 对象,包含了一个 name 属性;然后创建了另一个 o 对象,包含了一个 age 属性。接着我们把 o 对象的原型指向了 p 对象,这样 o 就可以访问到 pname 属性了。这也就是 JS 原型继承的基础。

3. prototype

函数的 prototype 属性是用来挂载属性和方法,以便通过构造函数创建新对象时使用。比如以下示例:

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

Person.prototype.hello = function() {
  console.log(`Hello, ${this.name}!`);
}

let p = new Person('Leo');
p.hello();  // 'Hello, Leo!'

上面示例中,我们定义了一个 Person 函数,创建了一个对象 p。我们通过 new Person('Leo') 来创建 p,在实例化过程中,Personprototype 中所定义的 hello 函数被赋值给了 p 的原型对象。这样我们可以通过 p.hello() 来调用这个函数。

4. 总结

上面我们分别讲解了 __proto__prototype,从实例的角度分别说明了它们的用法。

在具体使用中,我们可以结合这两个特性,使用原型链来实现对象之间的继承关系(实际上就是将一个对象的 __proto__ 属性指向另一个对象)。根据需要我们还可以通过给构造函数的 prototype 添加方法和属性,以便将这些方法和属性赋值给由构造函数创建的实例对象的原型对象。

希望这些讲解对你有所帮助~

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JS原型prototype和__proto__用法实例分析 - Python技术站

(0)
上一篇 2023年6月10日
下一篇 2023年6月10日

相关文章

  • 详解json串反转义(消除反斜杠)

    下面我将详细讲解如何反转义JSON串中的反斜杠,从而去除JSON中的转义字符。 什么是JSON转义字符 JSON中,所有的控制字符和非ASCII字符都必须进行转义。转义字符是由反斜杠加上一个字符组成的,比如\”表示双引号,\\表示反斜杠,\n表示换行符。这些转义字符可以让一个字符变得特别,这也是JSON可以描述Unicode字符集的原因。 为什么需要反转义J…

    JavaScript 2023年6月11日
    00
  • 深入理解javascript严格模式(Strict Mode)

    深入理解JavaScript严格模式 JavaScript严格模式(Strict Mode)是ECMAScript 5引入了一种新的执行模式,主要用于消除JavaScript语言的一些不合理、不严谨之处,减少一些怪异行为。 启用严格模式 全局启用严格模式 要想在全局范围启用严格模式,需要在JavaScript源码文件的顶部添加如下代码: "use …

    JavaScript 2023年5月28日
    00
  • JavaScript 常用函数

    现在我将为您详细讲解 JavaScript 常用函数的完整攻略。 一、JavaScript 常用函数介绍 JavaScript 提供了很多函数,可以让我们更加方便的处理数据和操作 DOM。在这里,我们将介绍一些常用的 JavaScript 函数,它们在日常工作中非常常用。 1. parseInt() parseInt() 函数可以将一个字符串解析成整数。它的…

    JavaScript 2023年5月18日
    00
  • JS打开层/关闭层/移动层动画效果的实例代码

    下面我分享一下关于JS打开层/关闭层/移动层动画效果的实例代码的完整攻略。 如何打开层 首先在 HTML 文件中添加一个基本的层结构,如下所示: <div id="layer"> <p>这是一个层</p> <button id="closeBtn">关闭</butt…

    JavaScript 2023年6月10日
    00
  • javascript:void(0)的含义及用法实例

    当我们在网页中点击一个按钮或链接时,为了防止页面刷新或跳转,常常会在href属性中使用“javascript:void(0)”这个值。那么这个值的含义以及用法实例是什么呢?接下来我们详细讲解。 含义 在javascript中,void是一个运算符,用于返回undefined。因此,使用“javascript:void(0)”就是将当前链接的默认行为赋值为“什…

    JavaScript 2023年5月28日
    00
  • 详解JavaScript 中的 replace 方法

    详解JavaScript 中的 replace 方法 什么是 replace 方法 在JavaScript中,replace方法属于字符串对象的方法,它被用于在字符串中用一个新的字符替换匹配的字符。replace方法有两种常用的用法:用正则表达式替换匹配部分和将一个字符串替换成另一个字符串。replace方法的语法如下: string.replace(sea…

    JavaScript 2023年5月28日
    00
  • JS co 函数库的含义和用法实例总结

    JS co 函数库的含义和用法实例总结 含义 co 函数库是一个基于生成器的异步流程控制库,它可以让你用更加优雅的方式写异步代码,避免了回调嵌套的问题。co 函数库可以自动将 yield 表达式的返回值封装成 Promise 对象,并使用 Promise 对象来统一处理错误。 安装 在 Node.js 中通过 npm 安装 co 函数库: npm insta…

    JavaScript 2023年5月27日
    00
  • 浅谈基于Token的WEB后台认证机制

    浅谈基于Token的WEB后台认证机制 什么是Token认证机制 Token是指一种用于认证的令牌,用于证明用户的身份。在Web应用程序中,Token通常指的是访问令牌(Access Token)或身份令牌(Identity Token)。身份令牌通常包含用户名、邮箱、用户ID等用户信息,并被加密以防止伪造。而访问令牌则会被用于向服务端发送请求,并验证请求的…

    JavaScript 2023年6月11日
    00
合作推广
合作推广
分享本页
返回顶部