前端面试知识点合集

原型和原型链

任何函数都可以作为构造函数。当该函数通过 new 关键字调用的时候,就称之为构造函数。

javascript 复制代码
var Parent = function(){}

//定义一个函数,那它只是一个普通的函数,不能称它为构造函数

var instance = new Parent();
//这时这个Parent就不是普通的函数了,它现在是一个构造函数。因为通过new关键字调用了它
//创建了一个Parent构造函数的实例 instance

prototype函数 特有的属性

概括prototype的作用: 让某一个构造函数实例化的 所有对象 可以找到公共的方法和属性

javascript 复制代码
var Parent = function(){}
Parent.prototype.name="所有Parent的实例都可以读取到我"
let p1 = new Parent();
let p2 = new Parent();
p1.name="所有Parent的实例都可以读取到我"
p1.name //"所有Parent的实例都可以读取到我"
p2.name //"所有Parent的实例都可以读取到我"
p1._proto_ === Parent.prototype;// true

proto 属性是 对象 特有的属性。它表示当前对象的原型 proto 对象是谁。

总结: 每个对象都有一个原型(prototype),并从原型上继承属性和方法。原型本身也是一个对象,它也有自己的原型,形成一个链式结构。这种链式结构就被称为原型链。


constructor属性

constructor 是对象特有的属性。它表示当前对象的 构造函数。在刚刚的例子中,我们使用构造函数Parent()创建了实例对象 p1。因此 p1的 constructor 就是 Parent()。可以 console.log()试试

javascript 复制代码
console.log(p1.constructor);// f Parent(){}

JS中函数也是对象。那么函数是否也有constructor 属性?我们发现构造函数 Parent()也有 constructor 属性。可以 console.log() 试试。

javascript 复制代码
console.log(Parent.constructor);//f Function(){ [native code]}

如果继续追问: Function()是否也有 constructor 属性?可以 console.og()试试。我们发现Function函数的构造函数就是本身了。

javascript 复制代码
console.log(Function.constructor);//f Function(){ [native code]}
相关推荐
wicb91wJ6几秒前
手写一个Promise,彻底掌握异步原理
开发语言·前端·javascript
zs宝来了4 分钟前
Next.js SSR/SSG:路由与渲染模式深度解析
前端·javascript·框架
小小仙。8 分钟前
IT自学第三十七天补充
java·开发语言
少司府9 分钟前
C++基础入门:初识模板
开发语言·c++·c·模板·函数模板·类模板·泛型编程
jinanwuhuaguo11 分钟前
OpenClaw范式深度剖析:从技术突破到安全治理的系统性研究(第二篇)
开发语言·人工智能·安全·架构·kotlin·openclaw
lly20240613 分钟前
C++ 命名空间
开发语言
问水っ15 分钟前
Qt高级编程 第7章 用QtConcurrent实现线程处理
java·开发语言
谢尔登16 分钟前
【Next】客户端组件和服务端组件
前端·javascript·react.js·架构
代码中介商20 分钟前
C语言进程管理与内存管理深度解析
c语言·开发语言
|晴 天|26 分钟前
Vue 3 项目错误处理实战:Vue ErrorHandler、Promise 监控、用户友好提示
前端·javascript·vue.js