MAIBILAI

javascript - 为什么 JavaScript 使用原型(prototype)继承来实现?

coder 2024-05-09

有很多文章和帖子解释了 JavaScript 继承的工作原理,但为什么 JavaScript 使用原型(prototype)继承而不是经典继承来实现?

我喜欢 JavaScript,所以我并不是说它是坏事...我只是好奇。

最佳答案

以下是 Brendan Eich 对发生的事情的看法: https://brendaneich.com/2008/04/popularity/

As I've often said, and as others at Netscape can confirm, I was recruited to Netscape with the promise of "doing Scheme" in the browser. At least client engineering management including Tom Paquin, Michael Toy, and Rick Schell, along with some guy named Marc Andreessen, were convinced that Netscape should embed a programming language, in source form, in HTML.

The diktat from upper engineering management was that the language must "look like Java". That ruled out Perl, Python, and Tcl, along with Scheme.

I'm not proud, but I'm happy that I chose Scheme-ish first-class functions and Self-ish (albeit singular) prototypes as the main ingredients. The Java influences, especially y2k Date bugs but also the primitive vs. object distinction (e.g., string vs. String), were unfortunate.

关于javascript - 为什么 JavaScript 使用原型(prototype)继承来实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2090613/

有关javascript - 为什么 JavaScript 使用原型(prototype)继承来实现?的更多相关文章

  1. javascript - 如何在 Crockford 的新构造函数模式中共享 "constructor"功能? - 2

    我看过来自thisquestiononclass-freeOOP的视频现在好几次了,但我无法将其应用到现实世界的示例中。Crockford的新构造函数模式如下所示:functionconstructor(spec){let{member}=spec,{other}=other_constructor(spec),method=function(){//accessesmember,other,method,spec};returnObject.freeze({method,other,});}其中spec是一个选项散列,生成的对象公开了关闭所有内部成员的方法。忽略解构(因为这可以在当今

  2. javascript - 带有 Object.create 和命名构造函数的原型(prototype) OO - 2

    我是从Python和Smalltalk的背景转到Javascript的,我很欣赏这门语言中Self和Lisp的传承。使用ECMAScript5,我想在没有new运算符的情况下尝试原型(prototype)OO。约束:创建类的可选new运算符instanceof的原型(prototype)链必须是正确的用于WebInspector调试支持的命名构造函数alloc().init()创建序列,类似于Objective-C和Python这是我为满足标准而进行的尝试:functionsubclass(Class,Base){"usestrict";functioncreate(self,args

  3. 前端面试总结 - 2

    1.引言    最近参加了大量的招聘会,投递了大量的简历,整整体会了从“随便找个厂上一下”——“还是的找个大厂”——“没人要”——“急了急了,海投一波”——“工资有点尬”——“海投中…”。简单说一下自己的一些感受吧,现在的前端属实有点尴尬:前端的基础教程特别多,最开始本来是觉得自己有这断断续续3年的编程经历还算有优势,可惜很多公司需要的是那种把面试玩明白的,知道后来我才发现原来前端是有着一个30w字的简历总结的,那里面涵盖了大量的前端面试题,甚至基本上我参加的面试或者笔试都有相关的题目。我面过多益网络(这厂背后总有一股不是很让人向往的知乎风评),多益网络的面试虽然可能繁杂一下,但是多益问的基础

  4. javascript - 为什么 JavaScript 使用原型(prototype)继承来实现? - 2

    有很多文章和帖子解释了JavaScript继承的工作原理,但为什么JavaScript使用原型(prototype)继承而不是经典继承来实现?我喜欢JavaScript,所以我并不是说它是坏事...我只是好奇。 最佳答案 以下是BrendanEich对发生的事情的看法:https://brendaneich.com/2008/04/popularity/AsI'veoftensaid,andasothersatNetscapecanconfirm,IwasrecruitedtoNetscapewiththepromiseof"doi

  5. 前端面试大全全全全 - 2

    SEOSEO是搜索引擎优化(SearchEngineOptimization)的缩写,它是指通过对网站的优化来提高其在搜索引擎排名中的位置,从而获得更多的有机流量和更好的网站可见度。SEO主要包括优化网站的内容、结构、代码等方面,使其更符合搜索引擎的算法和规则,提高网站的关键词排名、页面质量和用户体验,从而提高网站的流量和收益。优化网站的内容、结构、代码等方面,是SEO优化的重要方面,下面是具体内容:内容优化:优化网站的内容,包括关键词研究和使用、内容质量、标题和描述等。需要确保网站的内容与受众需求相符,并且易于理解和消化。同时,需要使用相关的关键词和术语,使得搜索引擎能够理解网站的主题和内容

  6. 【javaScript】学完js基础,顺便把js高级语法学了(尚硅谷视频学习笔记) - 2

    文章目录【1】基本总结深入一、什么是数据1、数据类型基本(值)类型对象(引用)类型2、判断相关问题二、什么是内存1、什么是数据2、什么是内存?3、什么是变量4、内存、数据、变量三者之间的关系相关问题1、问题:vara=xxx,a内存中到底保存的是什么?2、关于引用变量赋值问题3、在js调用函数传递变量参数时,是值传递还是引用传递4、JS引擎如何管理内存三、什么是对象1、什么是对象2、为什么要用对象3、对象的组成4、如何访问对象内部数据5、什么时候必须使用[‘属性值’]的方式四、什么是函数1、什么是函数2、为什么用函数3、如何定义函数4、如何调用(执行)函数5、回调函数1、什么函数才是回调函数2

  7. 【JS 构造|原型|原型链|继承(圣杯模式)|ES6类语法】上篇 - 2

    ⌚️⌚️⌚️个人格言:时间是亳不留情的,它真使人在自己制造的镜子里照见自己的真相!📖Git专栏:📑Git篇🔥🔥🔥📖JavaScript专栏:📑js实用技巧篇,该专栏持续更新中🔥🔥🔥,目的是给大家分享一些常用实用技巧,同时巩固自己的基础,共同进步,欢迎前来交流👀👀👀👉👉👉你的一键三连是对我的最大支持💙💜❤️文章目录✔️前言🉐内容📗构造函数📗原型📗原型链📕总结✔️前言❗️❗️❗️本篇系将带来JavaScript中的构造——原型——原型链——继承——ES6类语法系列知识完整讲解。❗️❗️❗️❕上篇涉及:构造——原型——原型链❕下篇涉及:继承——ES6类语法🉐内容📗构造函数何为构造函数?在JavaSc

  8. 2023前端面试题汇总 - 2

    今天想把近期看的面试题汇总一下,项目空档期,看的面试题比较多,但没有整理,导致回忆的时候,想不起来的还要重新查找。包括身边朋友面试遇到的题目也总结了进去。总结的都是前端基础(初级)面试题。三月份我会持续更新~~~浅卷一下下2023.03.09开始——>3.15——>3.20——3.23一、CSS面试题1.三种CSS隐藏元素的方式有哪些?设置display:none;样式。这个样式会让元素在页面上彻底消失。元素本来占有的空间,也会被其他元素占有,所以,他会导致浏览器的重排和重绘。第二种方式设置visibilty:hidden;的样式。它和display:none;的区别在于,元素在页面消失之后,

  9. 端面试题总结 - 2

    前端面试题总结vuevue**1、vue2与vue3的区别****2、vue2响应式原理与vue3响应式原理的区别****3、watch、computed、的区别****4、setup的作用****5-选项式API与组合式api的区别****6-ref与reactive的区别****7-组件通信的六种方式****8-hash与history的区别****9-导航守卫函数以及参数的作用****10-watch与watchEffect的区别****11-什么时跨域?如何解决跨域****12、在vue开发时改变数组或者对象的数据,什么情况页面视图没有更新?如何解决****13、V-if和v-show

  10. 2022最全前端面试题(持续更新) - 2

    css部分如何水平垂直居中一个盒子?已知高度可以使用line-height等于高度实现垂直居中;使用text-align:center实现水平居中display:flex;align-items:center;justify-content:center;绝对定位的话,给父元素设置定位属性relative,子元素设置absolute,然后设置子元素top:0;left:0;right:0;bottom:0;margin:auto; px、rem、em、vw的区别?px是相对于显示器屏幕分辨率而言的,固定的一种单位。em是相对于父元素的字体大小而言的,譬如父元素字体大小为16px,那么1em=1

随机推荐