javascript知识巩固

阅读: 评论:0

javascript知识巩固

javascript知识巩固

原型对象prototype
  • JS中,每一个构造函数都有一个prototype属性,指向另一个对象;
  • prototype就是一个对象,这个对象的所有属性和方法,都会被构造函数所拥有;
  • 我们可以把那些不变的方法,直接定义在prototype对象上,这样所有对象的实例就可以共享这些方法;
  • 原型的主要作用:共享方法,节约内存空间(所有实例都可以使用这个方法,不必开辟新的内存空间);
  • 一般情况下,我们的公共属性定义到构造函数里面,公共的方法我们放到原型对象身上。
	function Star(uname,age) {this.uname=unamethis.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=unamethis.age=age}/*Star.prototype.sing = function() {console.log('我会唱歌')}vie = 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(structor)console.log(wff.__proto__.constructor)

注意:如果我们修改了原来的原型对象,并且采取直接给prototype赋值为一个对象的方法(这时候会把原来的constructor属性覆盖掉),则我们必须手动利用constructor这个属性指回原来的构造函数(这样我们才能够知道我们的对象是通过哪一个构造函数创建出来的)。
注意:因此,当我们今后想要利用原型对象扩展内置对象方法的时候,对于数组和字符串内置对象,不能给原型对象覆盖操作诸如Array.prototype={};只能是=function(){}的方式。

本文发布于:2024-02-01 05:33:29,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170673680834257.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:知识   javascript
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23