javascript知识巩固------prototype属性
程序员文章站
2022-03-22 10:00:16
原型对象prototypeJS中,每一个构造函数都有一个prototype属性,指向另一个对象;prototype就是一个对象,这个对象的所有属性和方法,都会被构造函数所拥有;我们可以把那些不变的方法,直接定义在prototype对象上,这样所有对象的实例就可以共享这些方法;原型的主要作用:共享方法,节约内存空间(所有实例都可以使用这个方法,不必开辟新的内存空间);一般情况下,我们的公共属性定义到构造函数里面,公共的方法我们放到原型对象身上。function Star(uname,age)...
原型对象prototype
- JS中,每一个构造函数都有一个prototype属性,指向另一个对象;
- prototype就是一个对象,这个对象的所有属性和方法,都会被构造函数所拥有;
- 我们可以把那些不变的方法,直接定义在prototype对象上,这样所有对象的实例就可以共享这些方法;
- 原型的主要作用:共享方法,节约内存空间(所有实例都可以使用这个方法,不必开辟新的内存空间);
- 一般情况下,我们的公共属性定义到构造函数里面,公共的方法我们放到原型对象身上。
function Star(uname,age) {
this.uname=uname
this.age=age
}
Star.prototype.sing = function() {
console.log('我会唱歌')
}
let wff = new Star('王霏霏',18)
let pxz = new Star('裴秀智',18)
wff.sing()
pxz.sing()
对象原型 __proto__
(对象都会有一个属性__proto__)
- 对象身上系统自己添加一个__proto__指向我们构造函数的原型对象;
console.log(wff.__proto__ === Star.prototype)// 输出结果为true
- 方法的查找规则:首先先看wff实例对象身上是否有sing这个方法,如果有就执行这个实例对象身上的sing;如果没得,因为有__proto__的存在,就会去构造函数原型对象prototype身上查找sing这个方法;
- 图解:link
constructor 构造函数
- 对象原型(
__proto__
)和构造函数原型对象(prototype
)里面都有一个constructor属性,constructor我们称为构造函数,因为它指回构造函数本身; - constructor主要用于记录该对象引用于哪个构造函数,它可以让原型对象重新指向原来的构造函数;
- 很多情况下,我们需要手动的利用constructor这个属性指回原来的构造函数;
function Star(uname,age) {
this.uname=uname
this.age=age
}
/*
Star.prototype.sing = function() {
console.log('我会唱歌')
}
Star.prototype.movie = function() {
console.log('我会拍电影')
}
*/
Star.prototype = {
constructor:Star,
sing(){
console.log('我会唱歌')
},
movie(){
console.log('我会拍电影')
}
}
let wff = new Star('王霏霏',18)
let pxz = new Star('裴秀智',18)
console.log(Star.prototype.constructor)
console.log(wff.__proto__.constructor)
注意:如果我们修改了原来的原型对象,并且采取直接给prototype赋值为一个对象的方法(这时候会把原来的constructor属性覆盖掉),则我们必须手动利用constructor这个属性指回原来的构造函数(这样我们才能够知道我们的对象是通过哪一个构造函数创建出来的)。
注意:因此,当我们今后想要利用原型对象扩展内置对象方法的时候,对于数组和字符串内置对象,不能
给原型对象覆盖操作诸如Array.prototype={}
;只能是Array.prototype.xxx=function(){}
的方式。
本文地址:https://blog.csdn.net/wennianzhu/article/details/107528548
上一篇: CentOS7中安装mysql遇见的问题及解决方案
下一篇: move命令格式及使用
推荐阅读
-
javascript学习笔记(二十) 获得和设置元素的特性(属性)_基础知识
-
javascript 中__proto__和prototype详解_基础知识
-
JavaScript中的原型prototype属性使用详解
-
详解Javascript中prototype属性(推荐)
-
javascript知识巩固------创建对象的三种方式
-
javascript知识巩固------prototype属性
-
JavaScript使用prototype属性实现继承操作示例
-
javascript面向对象——prototype属性(原型属性)
-
javascript学习笔记(九)javascript中的原型(prototype)及原型链的继承方式_基础知识
-
理解JavaScript的prototype属性_javascript技巧