javascript - Javascript - 对象构造和利用 - 深入了解
问题描述
有人可以告诉我:
如何根据不同的开发场景选择对象构造?
与另一种模式相比,到目前为止,哪种模式对开发来说是一个好的模式?
如果你有机会为银行/社交网络/在线购买(如亚马逊、eBay)等开发一个完整的项目,你会使用哪一个,为什么。?
这只是为了从底层获得足够的理解。
1.对象构造函数:
var person = new Object();
person.name = "Demo name",
person.getName = function(){
return this.name ;
};
使用 Object.create() 方法: var a = Object.create(null);
2.文字构造函数:
var person = {
name : "Demo name",
getName : function (){
return this.name
}
}
3.函数构造函数:
function Person(name){
this.name = name
this.getName = function(){
return this.name
}
}
4. 原型:
function Person(){};
Person.prototype.name = "Demo name";
5.功能/原型组合:
function Person(name){
this.name = name;
}
Person.prototype.getName = function(){
return this.name
}
6.单身人士:
var person = new function(){
this.name = "Demo name"
}
解决方案
是不行的。它对文字没有任何好处,只是速度较慢且可读性较差。
永远是一个不错的选择。
const user = { name: "Jonas", session: 1234 };
应该使用而不是 2. 如果您在设置对象时有其他逻辑(例如,如果创建了用户,则为他生成会话),或者如果您必须在多个位置创建某个对象。但是我不赞成
new
运营商,我会这样做:function createUser(name) { return { name, session: createSession() } } function logout(user) { user.session = undefined; }
不确定应该是什么,在原型上拥有属性很少有意义。
如果您支持 OOP,这是一个不错的选择,但是现在我会使用该
class
语法,使其更易于阅读(尤其是对于其他语言的程序员)。通过将方法移动到原型中,它们可以在实例之间共享,如果创建了大量实例,这将减少内存和性能成本。class User { constructor(name) { this.name = name; } login() { this.session = 1234; } }
毫无意义,选择 1. 代替
推荐阅读
- java - 无法将远程调试器附加到 PCF 中的应用程序
- c - 如何折叠带有预处理器的控制语句?
- windows - 为什么 Kafka Streams 应用程序在 Windows 上失败并出现 AccessDeniedException 以进行状态清理?
- python - 如何在python中将for循环转换为列表理解
- c# - ASP.Net Core - 客户格式化程序优先
- javascript - 将按钮/文本添加到仅具有 javascript/jquery 和 css 类的所有元素
- node.js - 检查/解码 auth0 访问令牌
- mongodb - 如何使用 find() 显示检索数据的反馈?
- excel - 从 VB 创建 Sybase 连接时出错
- python-3.x - Boto3:需要 Future 或协程