Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[js] 第109天 请描述下什么是原型模式?它主要运用在哪些场景? #1019

Open
haizhilin2013 opened this issue Aug 2, 2019 · 3 comments
Labels
js JavaScript

Comments

@haizhilin2013
Copy link
Collaborator

第109天 请描述下什么是原型模式?它主要运用在哪些场景?

@haizhilin2013 haizhilin2013 added the js JavaScript label Aug 2, 2019
@quanhuan2011
Copy link

原型模式是一种设计模式,就是创建一个共享的原型实例,通过拷贝这些原型创建新的对象,也就是创建一个对象作为另一个对象的Prototype属性。

优点:用于创建重复的对象,可以提升性能。
结合优点,可以运用在以下几种场景:
1、类初始化需要消耗很多资源
2、有多个调用者调用且每个调用者会修改其值,相当于保存一份原有的对象拷贝相同对象进行修改,即保护性拷贝
3、通过new对象时需要很多繁琐的准备或访问权限

@lizhesystem
Copy link

大体上有两种使用场景(通俗理解就是,把new Object的方式变成拷贝一个对象,new比较占资源)

1.在需要一个类的大量对象的时候,使用原型模式是最佳选择,因为原型模式是在内存中对这个对象进行拷贝,要比直接new这个对象性能要好很多,在这种情况下,需要的对象越多,原型模式体现出的优点越明显。

2.如果一个对象的初始化需要很多其他对象的数据准备或其他资源的繁琐计算,那么可以使用原型模式。

3.当需要一个对象的大量公共信息,少量字段进行个性化设置的时候,也可以使用原型模式拷贝出现有对象的副本进行加工处理。

@xiaoqiangz
Copy link

原型模式是一种设计模式:通过拷贝指定的原型实例(对象),创建新跟该对象一样的对象,简单说就是克隆指定对象。
create(o) { function f() {} f.prototype = o return new f() }

运用场景:
1、直接创建对象的代价比较大,那么可以使用原型模式。
2、创建大量相同或相似的对象,可以使用原型模式。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
js JavaScript
Projects
None yet
Development

No branches or pull requests

4 participants