本文主要介绍了JS创建自定义对象的六种方法,通过示例代码进行了非常详细的介绍,对您的学习或工作有一定的参考价值。有需要的朋友就跟着下面的边肖学习吧。
1、创建一个 Object 实例
var person=new Object();
person.name=' rose
person.age=18
person.job=' actor
person.sayName=function () {
console . log(this . name);
};
console.log(人);
2、对象字面量
var person={
姓名:“罗斯”,
年龄:18,
工作:“演员”,
sayName: function () {
console . log(this . name);
},
};
console.log(人);
以上两种方式是创建对象的两种基本方式,它们的原型是Object。
3、工厂模式
函数createPerson(姓名、年龄、演员){
var person=new Object();
person.name=' rose
person.age=18
person.job=' actor
person.sayName=function () {
console . log(this . name);
};
退货人
}
console.log(对象的p1实例);//真
console . log(create person的p1实例);//假
从上面的代码我们可以看到,工厂模式实际上是借助函数在内部返回第一个方法(new Object())创建的对象。
优点:创建相似对象很方便。
缺点:没有解决物体识别的问题,即如何知道一个物体的类型。
4、构造函数方式
职能人员(姓名、年龄、工作){
this.name=name
this.age=年龄;
this.job=job
this.sayName=function () {
console . log(this . name);
};
}
var p=新人('玫瑰',18,'演员');
console . log(p instance of Person);//真
console . log(p instance of Object);//真
构造函数可以创建特定类型的对象。像Object和Array这样的本机构造函数会在运行时自动出现在执行环境中。
构造函数模式和工厂模式的区别在于:
没有显式的对象创建,
直接属性和方法被分配给该对象。
没有退货单
构造函数必须使用new操作符来创建对象,它将经历以下四个步骤。
创建一个对象。
这指向这个新创建的对象。
执行代码
返回此对象。
构造函数的优点:所有构造函数创建的对象,其原型上都有一个构造函数属性,指向构造函数Person,这个属性本来是用来标识数据类型的。
担心
职能人员(姓名、年龄、工作){
this.name=name
this.age=年龄;
this.job=job
this . say name=say name;
}
函数sayName(){
console . log(this . name);
}
var p=新人('玫瑰',18,'演员');
缺点:当一个对象需要很多方法时,会在全局范围下定义多个函数。结果就是完全没有封装,全局范围下的函数太多了。
5、原型模式
函数Person() {}
person . prototype . name=' rose ';
person . prototype . age=18;
person . prototype . say name=function(){
console . log(this . name);
};
var p=新人();
console . log(p);
说到原型对象,就说原型链吧。原型和原型链对象如下图所示:
我们可以看到,prototype上定义的所有属性都在它的prototype对象上。原型对象上的属性和方法属于公共属性和公共方法。可以访问它的所有实例。
6、**组合使用构造函数模式和原型模式 ** 最常用
职能人员(姓名、年龄){
this.name=name
this.age=年龄;
}
person . prototype . say name=function(){
console . log(this . name);
};
var p=新人('玫瑰',18);
console . log(p);
当一个对象引用它的属性时,它会跟随原型链,直到找到对象的原型。
总结
关于JS创建自定义对象的六种方法的文章到此结束。有关JS创建自定义对象的更多信息,请搜索我们以前的文章或继续浏览下面的相关文章。希望你以后能支持我们!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。