js基础05_js类、原型对象、原型链&案例(解决无限debugger)

1、prototype

一般用来解决js中的类,用于添加方法

【注意】一般可以用如下来在js对象中添加方法,但是这个是有个严重的问题。比如创建其他类多了,那么就会导致,每次创建一个对象都要创建这个方法,如果有100甚至更多对象,那么创建更多的方法就会浪费内存

javascript 复制代码
// 问题:
// 1. 方法呢?
// 2. 类呢?
function Person(name, age){
    this.name = name;
    this.age = age;
    // 这样写是有很大问题的, 如果Person的方法有100个. 意味着, 每创建一个对象, 方法就要完全重新复刻一遍
    this.chi = function(){ // ?
        console.log(this.name, "在吃东西");
    }
}

所以引出概念prototype,这个就是js中的类,我们在类里面创建方法而不是对象

js继承:A继承自B

javascript 复制代码
// A.prototype.__proto__ = B.prototype
function.Animal(){
}
function.Cat(){}

Cat.prototype.__proto__ = Animal.prototype;

var c = new Cat();
c.chi()

为什么Function无法解决无限debugger的问题,如下图:

原因如下图

所以正确的改法如下:

javascript 复制代码
// // 用原型链可以解决无限debugger的逻辑
// // 用哪个, 改哪个
// Function.prototype.constructor = function(arg){
//     arg = arg.replaceAll("debugger;", "");
//     arg = arg.replaceAll("debugger", "");
//     return new Function(arg);
// }
相关推荐
ZC跨境爬虫2 分钟前
模块化烹饪小程序开发日记 Day6:(菜谱列表接口开发与日志调试实践)
前端·javascript·css·ui·微信小程序·html
RSTJ_16254 分钟前
PYTHON+AI LLM DAY FIFITY-THREE
开发语言·人工智能·python
JAVA社区5 分钟前
Java进阶全套教程(一)—— 数据框架Mybatis详解
java·开发语言·面试·职场和发展·mybatis
UEBqbZvUB7 分钟前
基于 Flask 框架开发的在线学习平台,集成人工智能技术,提供分类练习、随机练习、智能推荐等多种学习模式 HTTPS ECDHE 握手全解析
开发语言·flask·java-consul
qq_2518364579 分钟前
基于java 安卓-RSS阅读系统毕业论文
android·java·开发语言
之歆12 分钟前
Day15_JavaScript DOM 事件完全指南:从基础到实战(上)
开发语言·javascript·ecmascript
JAVA社区13 分钟前
Java进阶全套教程(八)—— Docker超详细实战详解
java·运维·开发语言·docker·容器·面试·职场和发展
todaycode13 分钟前
Vue + CPP项目
javascript·c++·vue.js
水木流年追梦18 分钟前
大模型入门-RL基础
开发语言·python·算法·leetcode·正则表达式
.千余18 分钟前
【Linux】Socket编程UDP
linux·运维·服务器·开发语言·网络协议·学习·udp