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);
// }