JavaScript 原型

发布时间:2025-05-01 11:42
自己总结的原型

1.构造函数存在的问题

构造函数方法很好用,但是存在内存浪费的问题

2.构造函数原型 prototype

​ 构造函数通过原型分配的函数是所有对象所共享的

JS中规定,每一个构造函数都有一个prototype属性,指向另一个对象,注意这个prototype就是一个对象,这个对象的所有的属性和方法,都会被构造函数所拥有

我们可以把那些不变的方法,直接定义在prototype对象上,这样所有对象的实例就可以共享这些方法

function star (name,age){ this.name = uname; this.age = age; } Star.prototype.sing = function(){ console.log('我会唱歌'); } var ldh = new Star('刘德华',18) var zxy = new Star('张学友',19) console.log(ldh.sing === zxy.sing); //true ldh.sing(); //我会唱歌 zxy.sing(); //我会唱歌 //一般情况下,我们公共属性定义到构造函数里面,公共的方法我们放在原型对象身上

问题?

1.原型是什么?

​ 一个对象,我们也称为prototype为原型对象

2.原型的作用是什么?

共享方法

3.对象原型 ____proto

function star (name,age){ this.name = uname; this.age = age; } Star.prototype.sing = function(){ console.log('我会唱歌'); } var ldh = new Star('刘德华',18) var zxy = new Star('张学友',19) console.log(ldh.sing === zxy.sing); //true ldh.sing(); //我会唱歌 console.log(ldh); //对象身上系统会自动添加一个__proto__,指向我们构造函数的原型对象prototype console.log(ldh.__proto__ === Star.prototype); //true //方法的查找规则: 首先先看ldh对象身上是否有sing方法,如果有,就执行这个对象上的sing //如果没有sing这个方法,因为有__proto__的存在,就去构造函数原型对象prototype身上去查找sing这个方法

对象都会有一个属性__proto__ 指向构造函数prototype原型对象,之所有我们对象可以使用构造函数prototype原型对象上面的属性和方法,因为是有__proto__ 原型存在

__proto__ 对象原型和原型对象prototype是等价的

4.constructor 构造函数

对象原型(__proto__)和构造函数(prototype)原型对象里面有一个属性 constructor 属性,constructor我们称之为构造函数,因为它指回调函数本身

constructor 主要用于记录该对象引用与哪个构造函数,它可以让原型对象重新指向原来的构造函数

function Star (name,age){ this.name = uname; this.age = age; } /*Star.prototype.sing = function(){ console.log('我会唱歌'); }; Star.prototype.movie = function(){ console.log('我会演电影') }*/ //很多情况下,我们需要手动的利用constructor 这个属性 指回 原来的构造函数 Star.prototype = { //如果我们修改了原来的原型对象,给原型对象赋值的是一个对象,则必须手动的利用constructor指回原来的构造函数 constructor : Star sing:function(){ console.log('我会唱歌'); }, movie:function(){ console.log('我会演电影') } } var ldh = new Star('刘德华',18) var zxy = new Star('张学友',19) console.log(Star.prototype); //Object console.log(ldh.__proto__); console.log(Star.prototype.constructor); //返回的是构造函数本身 console.log(ldh.__proto__.constructor);//返回的是构造函数本身

5.构造函数,实例,原型对象三者之间的关系

构造函数原型对象 之间的关系

6.原型链

function star (name,age){ this.name = uname; this.age = age; } Star.prototype.sing = function(){ console.log('我会唱歌'); } var ldh = new Star('刘德华',18) var zxy = new Star('张学友',19) //1.只要是对象就有__proto__原型,指原型对象 console.log(Star.prototype) //里面也有一个 __proto__的属性 console.log(Star.prototype.__proto__ ===Object.prototype) //true //2.我们Star原型对象里面的__proto__ 原型指向是Object.prototype console.log(Object.prototype.__proto__); //null

7.JavaScript 的成员查找机制(规则)

当访问一个对象的属性(包括方法)时,首先查找这个对象自身有没有该属性 如果没有找到就会查找他的原型(也就是__proto__指向的prototype原型对象) 如果还没有就查找原型对象的原型Object的原型对象) 以此类推一直找到Object为止(null) __proto__ 对象原型的意义就在于为对象成员查找机制提供一个方向,或者说是一条线路

浏览 88

1

网址:JavaScript 原型 http://c.mxgxt.com/news/view/916666

相关内容

JavaScript数据可视化库
JavaScript中正则表达式判断匹配规则及常用方法
JavaScript初级玩法(1)—控制台输出三角形
HTML5期末大作业:明星个人介绍网站设计——杨洋(10页) HTML+CSS+JavaScript 个人网页制作 学生个人网页Dreamweaver设计作业 学生HTML个人网页作业作品下载
基于JavaScript实现自定义滚动条 爱问知识人
React Native转型之路:揭秘为何行业巨头选择放手
林小冉
罗志祥小猪极限挑战原形暴露 周扬青真惨
2023前端明星项目深度解析与排行
比乐族

随便看看