js构造函数中如何调用prototype内方法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js构造函数中如何调用prototype内方法相关的知识,希望对你有一定的参考价值。

取消
首页
编程
手机
软件
硬件
安卓
苹果
手游
教程
平面
服务器
首页 > 网络编程 > javascript > javascript技巧 > js构造函数constructor和原型prototype
js构造函数constructor和原型prototype原理与用法实例分析
发布时间:2020-03-02 09:43:39 作者:叶落森
本文实例讲述了js构造函数constructor和原型prototype原理与用法。分享给大家供大家参考,具体如下:

所有引用类型(函数,数组,对象)都拥有__proto__属性(隐式原型)

所有函数拥有prototype属性(显式原型)(仅限函数)

原型对象:拥有prototype属性的对象,在定义函数时就被创建

__proto__, prototype和constructor

下面这三个属性的定义非常重要,始终贯穿在原型中。

prototype:此属性只有构造函数才有,它指向的是当前构造函数的原型对象。
__proto__:此属性是任何对象在创建时都会有的一个属性,它指向了产生当前对象的构造函数的原型对象,由于并非标准规定属性,不要随便去更改这个属性的值,以免破坏原型链,但是可以借助这个属性来学习,所谓的原型链就是由__proto__连接而成的链。
constructor:此属性只有原型对象才有,它默认指回prototype属性所在的构造函数。
构造函数的特点:

 a:构造函数的首字母必须大写,用来区分于普通函数

 b:内部使用的this对象,来指向即将要生成的实例对象

 c:使用New来生成实例对象

function定义的对象有一个prototype属性,使用new生成的对象就没有这个prototype属性(Person是一个对象)

Person是一个对象,它有一个prototype的原型属性(因为所有的对象都一prototype原型!)prototype属性有自己的prototype对象,而pototype对象肯定也有自己的construct(构造)属性,construct属性有自己的constructor(构造函数)对象,神奇的事情要发生了,这最后一个
参考技术A <!DOCTYPE html>
<html>
<head>
</head>
<body>
<script type="text/javascript">
    var Person = function()
        this.name = "csz";
        Person.prototype.say();
    
    Person.prototype.say = function() 
        alert("hello");
    
    Person();
</script>
</body>
</html>

直接调用就行了啊,调用Person就直接调用了它原型上的say方法了

js构造函数中this介绍

如果构造函数调用在圆括号内包含一组实参列表,先计算这些实参表达式,然后传入函数内,这和函数调用和方法调用是一致的。但如果构造函数没有形参,JavaScript构造函数调用的语法是允许省略实参列表和圆括号的。凡是没有形参的构造函数调用都可以省略圆括号,比如,下面这两行代码就是等价的:

var o= new Object();
var o = new Object;

 

构造函数调用创建-一个新的空对象,这个对象继承自构造函数的prototype属性。构造函数试图初始化这个新创建的对象,并将这个对象用做其调用上下文,因此构造函数可以使用this关键字来引用这个新创建的对象。注意,尽管构造函数看起来像-一个方法调
用,它依然会使用这个新对象作为调用上下文。也就是说,在表达式new o.m()中,调用上下文并不是o。
构造函数通常不使用return关键字,它们通常初始化新对象,当构造函数的函数体执行完毕时,它会显式返回。在这种情况下,构造函数调用表达式的计算结果就是这个新对象的值。然而如果构造函数显式地使用r et ur n语句返回一个对象,那么调用表达式的值就是这个对象。如果构造函数使用return语句但没有指定返回值,或者返回一个原始值,那么这时将忽略返回值,同时使用这个新对象作为调用结果。

以上是关于js构造函数中如何调用prototype内方法的主要内容,如果未能解决你的问题,请参考以下文章

JS高级——对象的原型__proto__函数的原型prototype构造函数

原型链、constructor和prototype图文详解

js之prototype理解

浅谈JS中的构造函数原型对象(prototype)实例中的属性/方法之间的关系

如何实现一个new

js构造函数中this介绍