五月下旬刚开始刷一些前端的面试题,在LeetCode上找了一个JavaScript的题库,先选了一个简单的题:
请你编写一段代码实现一个数组方法,使任何数组都可以调用 array.last() 方法,这个方法将返回数组最后一个元素。如果数组中没有元素,则返回 -1 。
你可以假设数组是 JSON.parse 的输出结果。
示例 1 :
输入:nums = [null, {}, 3]
输出:3
解释:调用 nums.last() 后返回最后一个元素: 3。
示例 2 :
输入:nums = []
输出:-1
解释:因为此数组没有元素,所以应该返回 -1。
看了评论的解答
Array.prototype.last = function() {
if (this.length === 0) {
return -1;
}
return this[this.length - 1];
}
嗯,看着确实简单,但是...这个prototype是啥呢?(本人js学的比较菜 ( •̆ ₃ •̆ ))
经过一些了解,得到以下理解
`prototype`是JavaScript中一个核心的概念,它主要用于实现面向对象编程中的继承特性。简单来说,`prototype`是一个对象,用于存储共享的属性和方法,这些属性和方法可以被它的所有实例所继承。
每个JavaScript的函数都有一个`prototype`属性,该属性是一个特殊的对象,当函数作为构造函数创建新对象时,
比如
// 定义构造函数
function Person(name, age) {
this.name = name; // 初始化属性
this.age = age;
}
新创建的对象会自动链接到这个构造函数的`prototype`对象上,形成原型链(prototype chain)。这意味着,通过构造函数创建的所有实例都可以访问到`prototype`上定义的属性和方法。
例如,
Person.prototype.sayHello = function() {
console.log('Hello!');
之后所有通过new Person创建的对象实例都能调用sayHello方法
const homo= new Person("李田所",24)
这样的话
homo.sayHello()就会在控制台打印 Hello了
总结一下,`prototype`的主要作用是:
1. 实现继承:让对象可以继承构造函数原型上的方法和属性。
2. 共享方法和属性:节省内存,所有实例共享同一份方法定义,而不是每个实例都有自己的副本。
3. 原型链:形成查找机制,当试图访问一个对象的属性或方法时,如果对象本身没有,JavaScript引擎会继续在其原型对象中查找,这个过程会一直延续到原型链的末端。
刚开始写博客,有问题还请友友们多多包涵(つ﹏⊂)