JS 原型、原型链及相关题目

原型

隐式原型:

每个对象拥有一个原型对象。查看方法:对象.proto
默认情况,对象的隐式原型指向其构造函数的原型。

函数原型

每个函数都有一个特殊的属性叫作原型(prototype)。查看方法:函数.prototype。
构造函数的prototype.construction指向构造函数本身。

原型链

原型链结构

原型链结构

1.p对象的隐式原型(__proto__)等于其构造函数(Per)的 prototype;p对象可以继承Per原型(prototype)上的属性。
2.构造函数(Per)的prototype也是一个对象,所以Per.prototype的__proto__等于它的构造函数(Object)的prototype。
3.函数的本质是对象,所以Per的__proto__指向 Function.prototype。
4.Function.prototype.proto 指向 Object.protype。
5.Object.prototype.__proto__指向null。
6.构造函数的原型(protoytype)上的 constructor 指向构造函数本身。
7.代码运行过程中,某对象的属性可以沿着原型(prototype)链一直找到null

方法

1.Object.getPrototypeOf(对象):获取对象的隐式原型。
2.Object.prototype.isPrototypeOf():判断指定的对象是否在本对象的原型链中。返回布尔值。
3.对象 instanceof 函数 :判断函数的原型是否在对象的原型链上。
!注意:在页面上有frame(窗口)会失效。
4.Object.prototype.hasOwnProperty(属性名):判断一个对象 自身是否拥有某些属性。
5.Object.create(对象):创建一个新对象,其隐式原型指向指定的对象。
!注意:一定要有参数,可以是null。
应用:可以用来创建对象。
6.Object.setPrototypeOf() :设置一个指定的对象的原型到另一个对象或 null
!参数:obj—要设置其原型的对象。.
()—该对象的新原型(一个对象 或 null)。

简单的原型题

 function
  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
闭包是指在一个函数内部定义的函数可以访问外部函数的变量和参数,即使外部函数已经执行结束。闭包形成一个封闭的作用域,保留了外部函数的变量和环境。这种特性使得闭包可以解决诸如变量私有化、保存变量状态等问题。 闭包的应用场景有很多,例如在异步编程中,可以使用闭包来保持状态,避免变量提升导致的错误;在模块化开发中,可以使用闭包来实现私有变量和方法的封装。但闭包也有一些注意事项,比如会占用内存,造成内存泄漏;还可能导致变量无法被垃圾回收,影响性能。 原型链是JavaScript中实现继承的机制。每个JavaScript对象都有一个内置的属性__proto__指向它的原型对象,原型对象又有自己的__proto__,形成了原型链。当访问对象的属性或方法时,会先在对象本身查找,如果找不到则沿着原型链向上查找,直到找到或者到达原型链的末尾(即null)。 原型链的好处是可以节省内存,将公共的属性和方法定义在原型对象中,所有实例对象共享这些属性和方法;还可以实现继承,子类对象的原型对象可以指向父类对象,从而共享父类的属性和方法。 原型链的缺点是只能继承父类的实例属性和方法,不能继承构造函数中的私有属性和方法;还有可能出现多个子类实例共享同一个父类实例的情况,导致数据共享的问题。 为了解决原型链继承的缺点,ES6引入了class关键字,可以更方便地实现面向对象编程,并且支持super关键字调用父类的方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值