gpt4 book ai didi

javascript - 在 ECMA-262 或 ECMA 5.1 之前,Javascript 真的没有伪经典继承或原型(prototype)继承支持吗?

转载 作者:行者123 更新时间:2023-11-29 18:26:21 24 4
gpt4 key购买 nike

原因是,虽然我们可以在Javascript中使用伪经典继承,但实际上我们必须实现自己的extendinherit

关于原型(prototype)继承——我认为它确实有这样的特性,如果使用 foo.bar,如果 bar 不是 foo 的属性,解释器或编译后的代码(例如如果使用 Google V8)将沿着原型(prototype)链上升,但是没有内置方法来使对象 b 的隐藏原型(prototype)属性点a 作为原型(prototype)链。我们必须通过定义 clone() 函数或 Object.create() 来添加它。更重要的是,我认为我在纯原型(prototype)继承代码中看到没有任何构造函数。所以看起来在原型(prototype)代码中,没有构造函数(构造函数)。但是如果我们使用原型(prototype)继承,我们实际上必须使用构造函数来实现 clone() —— 这更像是伪经典继承方面。

所以看起来原来Javascript其实既不是Pseudo-classical也不是Prototypal inheritance?根据this Wikipedia article,我读到它需要在 10 天内上市,否则更糟糕的东西会出现在市场上。 .但我也有些奇怪,为什么1995年Javascript出来后的1年或2年,至少Netscape版本的Javascript没有添加extendObject.create() 方法了吗?

本题旨在理解和阐明Javascript伪经典和原型(prototype)部分的一些概念。这是真的吗——原始 Javascript 本身不支持伪经典或原型(prototype)继承?

最佳答案

最初的目标是模仿 C 类语言,使 JS 看起来足够熟悉以加速采用。

在 1997 年,没有人以任何足够先进的方式使用 JS,甚至懒得考虑查看原型(prototype)。

人们仍在制作如下元素:

var car = new Object();
car.doors = 4;
car.wheels = 4;
car.position = new Object();
car.position.x = 230;
car.position.y = 400;

更好的是那些使用数组来制作这些对象的人。

var car = new Array();
car["doors"] = 4;
car["wheels"] = 4;
car["position"] = new Array();
car["position"]["x"] = 230;
car["position"]["y"] = 400;

这就是当时 LOT 的 JS 的样子。

老实说,仍然有很多看起来像那样的东西,因为人们仍然从 Java 或 C# 或 C++ 或 PERL 或 PHP 进来,并认为它看起来很熟悉以至于他们不需要费心学习它 - 他们可以将数组变成对象、集合或字典,这没关系...

这就是他们所做的。

没有人认为 JS 会成为一件大事。从来没有人想到过。因此,跨浏览器标准直到它已经成为一件大事才出现,那时,每个人对 JS 是什么 都有不同的想法。

即便如此,Internet Explorer 拥有最广泛的市场份额,以及最糟糕和非标准的 JS 实现......这已经改变了,但说真的,我们现在刚刚达到一个点,所有重要的新版本浏览器(5 大浏览器)都支持五年前概述和标准化的功能......

...当您谈论这样的事情时,这就是使船掉头所需的时间。

关于javascript - 在 ECMA-262 或 ECMA 5.1 之前,Javascript 真的没有伪经典继承或原型(prototype)继承支持吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12695200/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com