-
Notifications
You must be signed in to change notification settings - Fork 0
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
17、对象的创建 #17
Comments
这个记不太清楚了,脑子中出现的暂时有三种:
晚上回去瞅两眼红皮书,关机下班 |
1. 工厂模式
缺点:对象无法识别,因为所有的实例都指向一个原型 2. 构造函数模式
构造函数模式 与 工厂模式的不同:
缺点:解决了 工厂模式 存在的问题,但每次创建实例时,方法都要被重新创建一次。 因为构造函数模式每次创建实例时方法都要被重新创建一次,因此可以针对该点进行优化,将方法转移到外部。
缺点:这是个 🔨 的优化 3. 原型模式
优点:方法不会重新创建 更简单的原型语法: 对象字面量形式,看起来更加优雅点
缺点:重写了原型,丢失了constructor属性。 解决constructor属性丢失问题:
缺点:原型模式该有的缺点还是有
|
4. 组合使用构造函数模式和原型模式构造函数模式用于定义实例属性,而原型模式用于定义方法和共享属性。
5. 动态原型模式
|
6. 寄生构造函数模式
Person 创建了一个新对象,初始化对象后又返回该对象。除了使用 new 操作符并把使用的包装函数叫做构造函数之外,这个模式跟工厂模式其实 是一模一样的。构造函数在不返回值的情况下,默认返回新对象实例。而通过在构造函数末尾添加一个 return 语句,可重写调用构造函数时返回的值。 注意:首先,返回的对象与构造函数或者与构造函数的原型属 性之间没有关系;也就是说,构造函数返回的对象与在构造函数外部创建的对象没有什么不同。为此, 不能依赖 instanceof 操作符来确定对象类型。由于存在上述问题,我们建议在可以使用其他模式的情 况下,不要使用这种模式。 这个模式可以在特殊的情况下用来为对象创建构造函数。假设我们想创建一个具有额外方法的特殊
|
7. 稳妥构造函数模式所谓稳妥对象,指的是没有公共属性,而且其方法也不引用 this 的对象。稳妥对象最适合在 一些安全的环境中(这些环境中会禁止使用 this 和 new),或者在防止数据被其他应用程序(如 Mashup 程序)改动时使用。 稳妥构造函数遵循与寄生构造函数类似的模式,但有两点不同:
这样,变量 friend 中保存的是一个稳妥对象,而除了调用 sayName()方法外,没有别的方式可 以访问其数据成员。即使有其他代码会给这个对象添加方法或数据成员,但也不可能有别的办法访问传 入到构造函数中的原始数据。稳妥构造函数模式提供的这种安全性,使得它非常适合在某些安全执行环 境
|
No description provided.
The text was updated successfully, but these errors were encountered: