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

Javascript原型,如何访问原型函数

JavaScript原型是指每个对象在创建时都会关联一个原型对象,该原型对象包含了一些共享的属性和方法。通过原型,可以实现对象之间的属性和方法的共享,提高代码的复用性和性能。

要访问原型函数,可以通过对象的proto属性来访问。proto属性指向对象的原型对象。例如,如果有一个对象obj,可以通过obj.proto来访问该对象的原型对象。

另外,还可以使用Object.getPrototypeOf()方法来获取对象的原型对象。例如,Object.getPrototypeOf(obj)将返回obj的原型对象。

需要注意的是,直接访问proto属性并不是标准的JavaScript语法,它是非标准的属性,不建议在生产环境中使用。推荐使用Object.getPrototypeOf()方法来获取对象的原型对象。

在JavaScript中,原型链是通过原型对象的proto属性实现的。如果在当前对象中找不到某个属性或方法,JavaScript会自动去原型对象中查找,如果还找不到,就会继续往上层的原型对象中查找,直到找到该属性或方法或者到达原型链的顶端。

对于原型函数的访问,可以通过对象的原型链来实现。例如,如果有一个对象obj,可以通过obj.proto或Object.getPrototypeOf(obj)来获取该对象的原型对象,然后通过原型对象访问原型函数。

以下是一个示例代码:

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

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

var person = new Person("John");
person.sayHello();  // 输出:Hello, John

var prototype = Object.getPrototypeOf(person);
prototype.sayHello();  // 输出:Hello, John

在上面的示例中,定义了一个Person构造函数,并将sayHello函数添加到Person的原型对象上。通过创建Person的实例person,可以直接调用sayHello函数。同时,也可以通过获取person的原型对象,然后访问原型函数sayHello。

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

相关·内容

JavaScript原型原型

实际上,这个prototype对象就是通过调用构造函数创建的对象的原型,使用原型对象的好处是,在它上面定义的属性和方法可以被所有实例对象共享。...理解原型 无论何时,只要创建一个函数,就会按照特定的规则为这个函数创建一个prototype属性(指向原型对象)。...每次调用构造函数创建一个新的实例,这个实例内部的[[prototype]]指针就会被赋值为构造函数原型对象。...JavaScript中没有访问这个[[prototype]]特性的标准方式,但Firefox、Safari、Chrome会在每个对象上暴露_proto_属性,通过这个属性可以访问对象的原型。...关键在于理解这一点:实例与构造函数原型之间有直接的联系,但实例与构造函数之间没有。

35520

JavaScript原型原型链及原型链污染

0x01 JavaScript原型 一、对象和函数 在学习原型原型链之前,首先一定要搞清楚对象和函数到底有什么区别和联系: “对象是由函数创建的,而函数又是一种对象。”这样一句话要深刻记忆。...5-如果通过person对象添加了一个属性name,则通过person访问name时,就相当于屏蔽了原型中的属性name,输出的是person对象中的name值 6-通过person对象只能读取构造函数原型中的属性...由于__proto__是任何对象都有的属性,而JavaScript里万物皆对象,所以会形成一条__proto__连起来的链条,但递归访问__proto__必须最终到头,其终点是Null 当JavaScript...0x03 JavaScript原型链污染 在看懂原型链的那几点内容后,其实就应该可以理解什么是原型链污染了,就是修改其构造函数原型中的属性值,使其他通过该构造函数实例出的对象也具有该属性值。...那么,如何让__proto__被认为是一个键名呢? 我们将代码改成如下: ? 可见,新建的o3对象,也存在b属性,说明Object已经被污染: ?

1K10
  • 浅谈JavaScript原型原型

    ---- theme: channing-cyan 这是我参与8月更文挑战的第5天,活动详情查看:8月更文挑战 前言 昨天说的构造函数的小问题,我们可以用原型模式来解决,我们可以先看一下(工厂函数和构造函数...理解原型javascript中,无论何时只要创建一个函数,就会给这个函数函数创建一个特殊的属性叫作原型(prototype),在默认情况下,所有原型对象都会自动获得一个名为 constructor的属性...构造函数还可以给原型对象添加其他属性和方法。...); //Object 构造函数有一个prototype属性引用其原型对象,而这个原型对象也有一个 constructor 属性在引用这个构造函数,换句话说,两者循环引用:我们打印一下他们 console.log...原型链 在通过对象访问属性时,会按照这个属性的名称开始搜索,如果它本身有的话,就直接返回该名称对于的值,如果它本身没有的话,就会向它的原型对象上找,找到之后也返回该名称对应的值。

    29220

    JavaScript深入原型原型

    是这个函数原型吗? 其实,函数的prototype属性指向了一个对象,这个对象正是调用该构造函数而创建的实例的原型,也就是这个例子中的person1和person2的原型。 那么什么是原型呢?...既然实例对象和构造函数都可以指向原型,那么原型是否有属性指向构造函数或者实例呢?...Person.prototype中读取,正好原型中有该属性,所以 person.constructor === Person.prototype.constructor 其次是__proto__, 绝大部分浏览器都支持这个非标准的方法访问原型...《你不知道的JavaScript》中的话,就是:继承意味着复制操作,然而JavaScript默认并不会复制对象的属性,相反,JavaScript只是在两个对象之间创建一个关联,这样,一个对象就可以通过委托访问另一个对象的属性和函数...深入系列 JavaScript深入系列预计写十五篇左右,旨在帮大家捋顺JavaScript底层知识,重点讲解如原型、作用域、执行上下文、变量对象、this、闭包、按值传递、call、apply、bind

    50920

    javascript 原型原型链详解

    我们创建的每个函数都有一个 prototype (原型)属性,这个属性是一个指针,指向一个原型对象,而这个原型对象中拥有的属性和方法可以被所以实例共享。...无论什么时候,只要创建了一个新函数,就会根据一组特定的规则为该函数创建一个 prototype属性,这个属性指向函数原型对象。...在默认情况下,所有原型对象都会自动获得一个 constructor(构造函数)属性,这个属性包含一个指向 prototype 属性所在函数的指针。...虽然在脚本中没有标准的方式访问 [[Prototype]] ,但 Firefox、Safari 和 Chrome 在每个对象上都支持一个属性__proto__ ;而在其他实现中,这个属性对脚本则是完全不可见的...不过,要明确的真正重要的一点就是,这个连接存在于实例与构造函数原型对象之间,而不是存在于实例与构造函数之间。

    77180

    JavaScript核心概念-原型原型

    原型 我们先使用构造函数创建一个对象。...是这个函数原型吗? 其实,函数的prototype指向了一个对象,这个对象就是正在调用该构造函数而创建的实例的原型,也就是这个例子中的person1的原型。 proto 那什么是原型呢?...可以这样理解 , 每个JavaScript对象(null除外)在创建的时候都会关联另一个对象,这个对象就是我们所说的原型,每一个对象都会从原型继承属性。...__proto__ === Person.prototype); // true 既然实例对象和构造函数都可以指向原型,那么原型是否有属性指向构造函数或实例对象呢?...constructor 指向实例的属性倒是没有,但是指向构造函数的属性是有的,这就要介绍到constructor了 ,每个原型都有一个constructor属性指向关联的构造函数

    60410

    Javascript原型原型

    原型等于Function的原型链,在ECMAScript5.1的规范中是如此说明的:Function的prototype是一个函数对象,他内部的[[prototype]]属性值是标准内置的Object...因为是对象,所以没有构造函数,也没有自己的内置原型对象(prototype属性)。但还是有原型链的,他的__proto__指向Object的prototype。...2.2、总结 Function是函数(类)的基础原型 Object是对象的基础原型 运行时创建一个对象,会将构造器的prototype属性引用复制给对象的__proto__上,这里的创建一个对象,只能是...在Child的构造器中用Call执行Parent的构造器,实例构造器的继承执行(顺序执行父类、子类的构造函数)。...ES5中对子类的prototype进行赋值后,还需要重定向prototype.constructor到子类的构造函数

    852101

    图解 JavaScript 原型原型

    原型在平时工作中用得比较少, 但原型JavaScript 中的基础, 是构建大型应用, 框架不可或缺的一环, 是你在写代码时, 不知不觉就应用上了的一个最基础的知识....又比如你在使用下面这些代码的时候: // class class Foo extends React.Component; // 访问原型方法 const bar = {}; bar.hasOwnProperty...上图左边代表 Foo 函数, 它有一个 prototype 属性, 指向右侧这个原型对象, 每声明一个函数, 都会有这样的一个原型对象, 原型对象有一个 constructor 属性, 指向 Foo 函数本身...原型原型链是 JavaScript 作者为了继承而设计的, 由上边的分析, const foo = new Foo() 语句, 其实是产生了一个链条的, 如下: ?...这就是原型链, 我们也可以说, Foo 继承了 Object, 所以 foo 中能访问到 Object 的原型属性. 原型链的内容就到这里, 更多关于继承的内容, 会在下一篇讲解.

    90520

    JavaScript进阶--原型原型链、闭包

    原型1.prototype在JavaScript中,每个函数 都有一个prototype属性,当一个函数被用作构造函数来创建实例时,这个函数的prototype属性值会被作为原型赋值给对象实例(也就是设置...实例的__proto__属性),也就是说,所有实例的原型引用的是函数的prototype属性。...);每一个JavaScript对象(除了 null )都具有的一个属性,叫__proto__,这个属性会指向该对象的原型console.log(p....查找属性时,如果到这里还没有找到,那就是undefined了闭包函数函数内部能访问到的变量加在一起就是一个闭包常规认为,一个函数嵌套另一个函数,两个函数中间的环境,叫闭包,但其实这也是制造一个不会被污染沙箱环境...,而函数外部无法访问函数内部的变量,所以正好符合了闭包的定义。

    49510

    构造函数原型原型链、继承

    __proto__.constructor) 在对象上访问一个属性或方法时,会先从该对象查找,若找不到就去原型对象上找。...__proto__.split; //true 每个函数只要被创建就会有一个prototype属性,它的值就是原型对象(所以访问原型对象有两条途径:函数的prototype、实例对象的__proto_...this.nation){ Person.prototype.nation = 'Chinese' }; }; 原型函数被创建后prototype指向了默认的原型对象,如果使用new调用该函数来生成一个对象...实际上,由于原型对象B是由Object()函数创建的,而Object()函数的prototype的__proto指向的是null,所以一条原型链的起点是实例对象,终点是null,中间由__proto__...如果在实例对象A上访问某个属性或方法,JS会从实例对象A开始沿着原型链层层查找,直到遇见null。

    76520

    再解 JavaScript 原型原型

    前言 JavaScript 原型原型链虽然是一个老生常谈的话题,但依然困惑着很多人,今天我再来从另一个角度谈谈这个问题。 两个疑问 先看这样一段代码: let obj = {} obj....第一个问题 js 中每个对象都有一个“原型”,原型一般可以通过 __proto__访问到: let obj = {} console.log(obj....类似的: “原型”是一个普通的对象; 爸爸也有他的爸爸,原型也有它的原型。...第二个问题 对象与人不同的是: 人不可以随便拿爸爸的东西 而对象可以随便拿原型里的东西 比如,当你向一个对象,索要一个属性时: 如果这个对象没有你要的属性,它就会让它的原型(爸爸)给你 如果它爸也没有,...重要结论: 实例化的过程中(也就是“当 new 一个对象的时候”),类的 prototype 成为对象的原型 同一个类的多个实例(也就是“对象”),共享一个原型 结束语 原型是 js 底层的东西,不懂原型

    36000

    Javascript原型原型链?有什么特点?

    如何: js中继承都是通过原型对象实现的     什么是原型对象: 集中存储同一类型的所有子对象,共用成员的父对象     如何:      创建: 不用创建,买一赠一        每创建一个构造函数...,都附赠一个原型对象      继承: 在创建子对象时,new的第2步自动设置子对象继承构造函数原型对象      访问成员: 优先访问私有成员               自己没有,就去父对象(原型对象...)中查找      将成员添加到原型对象中:       构造函数.prototype.成员=值   私有属性和公有属性:    私有属性: 保存在当前对象本地,仅归当前对象独有的属性    公有属性:...所有的函数数据类型都天生自带一个属性:prototype(原型),这个属性的值是一个对象,浏览器会默认给它开辟一个堆内存 2....在浏览器给prototype开辟的堆内存中有一个天生自带的属性:constructor,这个属性存储的值是当前函数本身 3.

    72910

    图解JavaScript对象原型原型

    原创作者:陈帅华-探索技术艺术与国学之美 原文链接:http://www.shuaihuajun.com/article/javascript-prototype-chain/ 使用颜色、形状可视化...Javascript中抽象的原型链概念: 橙黄色实心代表函数函数是可执行的对象; 橘红色圈圈代表prototype属性,且总是存在于函数对象中; 蓝紫色带箭头线段代表原型链的走向; 蓝绿色实心代表普通对象...几乎所有函数,不论是JS内置构造函数,还是我们创建的函数,它们的原型都是Function.prototype,满足: Date....也是函数,但是它的原型竟是Object.prototype。...并不是所有函数原型都是Function.prototype,因为Function.prototype自身也是函数,它的原型却是Object.prototype; 并不是所有对象的原型都是Object.prototype

    55120

    JavaScript原型

    这种通过原型指向原型的层级关系形成了原型链。当我们访问一个对象的属性或方法时,JavaScript首先查找对象本身是否有该属性或方法。...原型链的工作原理原型链的工作原理可以通过以下步骤进行说明:当我们访问一个对象的属性或方法时,JavaScript首先查找对象本身是否有该属性或方法。...如果对象本身没有该属性或方法,JavaScript会继续在对象的隐式原型中查找。如果隐式原型中有该属性或方法,则返回它。否则,JavaScript会继续在隐式原型原型中查找,形成一个层级关系。...然后,我们定义了一个名为"Dog"的构造函数,并将"Animal"的实例作为"Dog"的原型。通过这样的原型链关系,"Dog"的实例"dog"可以访问到"Animal"原型上的"greet"方法。...这个示例展示了原型链的工作原理:当对象访问属性或方法时,它会沿着原型链向上查找,直到找到属性或方法,或者到达原型链的末尾。

    18030

    JavaScript笔记(2) 构造函数原型

    构造函数原型 目标: 这些之前都学过的我就不多赘述了,直接将图片贴上来了 JavaScript的构造函数中可以添加一些成员,可以在构造函数本身上添加,也可以在构造函数内部的this上添加....通过这两种方式添加的成员,就分别称为静态成员和实例成员 静态成员: 在构造函数本身添加的成员称为静态成员,只能由构造函数本身来访问 实例成员: 在构造函数内部创建的成员称为实例成员,只能由实例化的对象来访问...构造函数原型prototype 构造函数通过原型分配的函数是所有对象所共享的....JavaScript规定,每一个构造函数都有一个prototype属性,指向另一个对象.注意这个prototype就是一个对象,这个对象的所有属性和方法,都会被构造函数所拥有....对象原型__proto__ 对象都会有一个属性__proto__指向构造函数的prototype原型对象,之所以我们对象可以使用构造函数prototype原型对象的属性和方法,就是因为对象有__proto

    38510

    JavaScript中的显示原型和隐形原型(理解原型链)

    显式原型:prototype 隐式原型:__proto__ 1.显式原型和隐式原型是什么?...在js中万物皆对象,方法(Function)是对象,方法的原型(Function.prototype)是对象,对象具有属性(__proto__)称为隐式原型,对象的隐式原型指向构造该对象的构造函数的显式原型...原型对象也有一个属性叫constructor,这个属性包含一个指针,指向原构造函数。 注意:通过Function.prototype.bind方法构造出来的函数没有prototype属性。...2.二者的关系 隐式原型指向创建这个对象的函数的prototype 首先我们来看如何创建一个对象 a.通过对象字面量的方式。...构造函数function person本质上是由Function构造函数创建的,它是Function的一个实例。原型对象本质上是由Object构造函数创建的。

    3.1K30
    领券