源码家族
当前位置:首页 > 资讯中心

资讯中心

【 JS的原型的概念是怎么来的? 】

发布时间:2021-05-29 15:10:46 阅读次数:102

JS原型的概念.jpeg

因为早期的浏览器只能用于浏览,不具备与访问者交互的能力。例如,如果网页上有一栏“用户名”需要填写,浏览器将无法判断访问者是否真的填写,只能让服务器判断。


如果不填写,服务器会返回错误,要求用户重新填写,既浪费时间又浪费服务器资源。


这时候就需要一种网页脚本语言,它可以完成一些简单的操作,比如判断用户是否填写了表单。此时,面向对象编程是最繁荣的时期。 C++ 是当时最流行的语言,Java 语言也很快推出。


所以 Javascript 作者也受到了启发。 Javascript 中的所有数据类型都是对象,这与 Java 非常相似。但是,直接使用Java的“继承”机制太麻烦了。但是,Javascript 是所有对象,必须有一种机制来连接所有对象。因此,javascript作者最终设计了“继承”。


不过,他并不打算引入“类”的概念,因为一旦有了“类”,Javascript就是一个完整的面向对象的编程语言,显得有些过于正式,增加了初学者的入门难度。 .


他认为C ++和Java语言都使用新命令来生成示例。


C++ 写成:


ClassName *object = new ClassName(param);


Java 写成:


Foo foo =新的Foo();


这时候他就想到C++和Java在使用new命令的时候会调用“类”的构造函数。他做了一个简化的设计。在 Javascript 语言中,new 命令后面不是一个类,而是一个构造函数。


但是很快发现使用构造函数生成实例对象有一个缺点,就是不能共享属性和方法。


每个实例对象都有自己的属性和方法副本。这不仅无法实现数据共享,而且是资源的极大浪费。


最后添加了prototype属性的引入


考虑到这一点,作者决定为构造函数设置一个原型对象属性。


实例对象需要共享的所有属性和方法都放在这个对象中;那些不需要共享的属性和方法放在构造函数中。


一旦实例对象被创建,它会自动引用原型对象的属性和方法。


由于所有实例对象共享同一个原型对象,从外面看,原型对象似乎是实例对象的原型,而实例对象似乎“继承”了原型对象。


JavaScript使用原型编程,所有对象都可以共享原型上的方法,从而节省内存;同时,基于prototype的实现思想,JavaScript通过寻找合适的原型链轻松实现继承。


这是原型设计的两个最大好处!!!


上一篇:PHP过滤器是什么,有几种过滤器
下一篇:关于 Web 前端,您需要了解什么? 需要掌握哪些技术