在Javascript中,为什么我们使用函数来创建对象?
在javascript.info上学习一些关于创建对象的基本课程 我正在努力掌握如何选择制作物体的方法。因为有很多方法可以做到这一点。还有,为什么我们要使用函数来创建对象?为什么我们可以不用构造函数来创建对象呢?在什么情况下,一种方法比另一种更可取 这里有三种方法: 1:在Javascript中,为什么我们使用函数来创建对象?,javascript,function,object,methods,Javascript,Function,Object,Methods,在javascript.info上学习一些关于创建对象的基本课程 我正在努力掌握如何选择制作物体的方法。因为有很多方法可以做到这一点。还有,为什么我们要使用函数来创建对象?为什么我们可以不用构造函数来创建对象呢?在什么情况下,一种方法比另一种更可取 这里有三种方法: 1: let name=“bob”; 年龄=24岁; 让用户={ 姓名:姓名,, 年龄:年龄,, } 警报(用户名); 2: 功能obj(姓名、年龄){ 返回{ 姓名:姓名,, 年龄:年龄,, }; } 让用户=obj(“bob”
let name=“bob”;
年龄=24岁;
让用户={
姓名:姓名,,
年龄:年龄,,
}
警报(用户名);
2:
功能obj(姓名、年龄){
返回{
姓名:姓名,,
年龄:年龄,,
};
}
让用户=obj(“bob”,24);
警报(用户名);
3:
功能用户(姓名、年龄){
this.name=名称;
这个。年龄=年龄;
}
let user=新用户(“bob”,“24”)
警报(用户年龄);
2和3中的代码实际上不是用于制作蓝图对象的相同目的吗?谢谢。您的选项2和3更像是创建类而不是对象 问题是,javascript最近才开始定义类、对象和实例化对象之类的东西 为了您的享受,这里是第四条路
class User{
constructor (name, age) {
this.name = name
this.age = age
}
}
let user = new User("bob", "24")
这种新方法允许您扩展另一个类,从而提供适当的继承
class Person{
constructor (gender) {
this.gender=gender
}
}
class User extends Person{
constructor (name, age, gender) {
super(gender)
this.name = name
this.age = age
}
}
let user = new User("bob", "24", 'male')
选项1创建一个简单的对象。如果您只想存储一些密钥/数据对,那么这是一种明智的方法 选项2允许您生成大量相似的对象,但数据略有变化 选项3不是很有用,除非您将其与组合,以便生成的对象具有方法并使用继承
备选方案3方法被替代 1和2创建相同的对象,它们是
对象的实例。3创建一个对象,如果User
以及object
,该对象就是实例。使用方法3,您可以获得继承,或者至少向该类/函数(用户)的所有实例添加公共属性和方法。e、 g
功能用户(姓名、年龄){
this.name=名称;
这个。年龄=年龄;
}
User.prototype.showDetails=函数(){
log(`Name:${this.Name}\nAge:E${this.age}`);
}
让user1=新用户(“Bob”,“24”);
让user2=新用户(“John”,“25”);
log(user1.showDetails());
log(user2.showDetails())代码>1和2之间的差异可以忽略不计
数字1是使用{}
语法构造的对象。第二个函数返回使用{}
语法创建的对象。函数不是过程的一部分,它只是返回一个简单的值,一个对象
一切都是javascript中的对象。事实上不是,但主要是。数组是对象,您创建的这些键值对是对象(对象中的每个值也可以设置为对象)。字符串是对象,函数是对象。每个非基本数据类型都是一个对象
第三是一门课。仍然是一个对象,但具有类的属性,包括具有构造函数。对象只是一个值和一个数据结构,没有显式键入。“选项3不是很有用”-等等,我在调试时节省了很多时间,因为我可以看到一个特定的对象出现在一个意外的地方,它是MySpecialClass
的一个实例,而不是一些不起眼的对象
,ctor函数本身就已经值了一大笔钱。