JS创建对象的几种方式整理
2024-08-26 23:40:34
javascript是一种“基于prototype的面向对象语言“,与java有非常大的区别,无法通过类来创建对象。那么,既然是面象对象的,如何来创建对象呢?
一:通过“字面量”方式创建对象
方法:将成员信息写到{}中,并赋值给一个变量,此时这个变量就是一个对象
列如:
var person={"name":"abc","age":22,work:function(){console.loh(1)}}
如果{ }中为空,则将创建一个空对象:
var person={}
演示代码:
<script> var person={
name:"wqc",
age:22,
intro:function(){console.log(1)}
}; person.intro();
</script>
<script> var person={
name:"wqc",
age:22,
intro:function(){
console.log(1);
} }
person.class=22;//丰富成员变量
</script>
二、通过“构造函数”方式创建
方法:
var person=new 函数名();
比如:var person=new object();
<script>
function person(){
this.name="xiaoming";
this.age=22;
this.intro=function(){
console.log(2)
}
}
var per=new person();
per.intro();
</script>
三、通过object方式创建。
var obj=new Object()
方法:先通过object构造器new一个对象,再往里丰富成员信息。\
<script type="text/javascript">
2 var person = new Object();
3 person.name = "dongjc";
4 person.age = 32;
5 person.Introduce = function () {
6 alert("My name is " + this.name + ".I'm " + this.age);
7 };
8 person.Introduce();
9 </script>
第五种:原型创建对象模式
function Person(){}
Person.prototype.name = 'Nike';
Person.prototype.age = 20;
Person.prototype.jbo = 'teacher';
Person.prototype.sayName = function(){
alert(this.name);
};
var person1 = new Person();
person1.sayName();
使用原型创建对象的方式,可以让所有对象实例共享它所包含的属性和方法。
第六种:使用工厂模式创建对象
function createPerson(name,age,job){
var o = new Object();
o.name = name;
o.age = age;
o.job = job;
o.sayName = function(){
alert(this.name);
};
return o;
}
var person1 = createPerson('Nike',29,'teacher');
var person2 = createPerson('Arvin',20,'student');
在使用工厂模式创建对象的时候,我们都可以注意到,在createPerson函数中,返回的是一个对象。那么我们就无法判断返回的对象究竟是一个什么样的类型。于是就出现了第二种创建对象的模式。
第七种:组合使用构造函数模式和原型模式
function Person(name,age,job){
this.name =name;
this.age = age;
this.job = job;
}
Person.prototype = {
constructor:Person,
sayName: function(){
alert(this.name);
};
}
var person1 = new Person('Nike',20,'teacher');
最新文章
- 批处理命令——for
- SQL中的循环、for循环、游标
- Hadoop第4周练习—HDFS读写文件操作
- Activity UI Handler ProgressBar AsyncTask
- mysql安装启动教程(两种方法)
- QT中使用 slot 传递 opencv 中得Mat对象以及 使用多线程集成开源代码。
- [转载]如何重装Grub,使其可以引导双系统
- ls -l 显示年份
- 微信小程序-制作简易豆瓣笔记
- [硬件]_ELVE_STLINK下载出现nternal command error问题
- Matplotlib学习---用matplotlib画折线图(line chart)
- 实用ExtJS教程100例-010:ExtJS Form异步加载和提交数据
- python *和**的用法
- 2017 NAIPC A:Pieces of Parentheses
- 搭建hadoop_之 创建3个虚拟机配置好网络
- Session和Cookie的区别与联系
- java 多线程9 : synchronized锁机制 之 代码块锁
- 20155304 2016-2017-2 《Java程序设计》实验五(网络编程与安全)实验报告
- mysql 数据库查询
- 洛谷 P3952 时间复杂度 解题报告
热门文章
- ASP.NET WebApi 基于OAuth2.0实现Token签名认证
- C++ 中的不定参数与格式化字符串 # ## vsprintf
- MVP模式在Android中的使用
- 关于dede后台登陆后一片空白以及去除版权
- 《深度探索C++对象模型》调用虚函数
- 【python】Python的安装和配置
- Bizatlk Accelerator for RosettaNet安装与配置
- Session 在分布式系统中实现方式
- 物联网架构成长之路(25)-Docker构建项目用到的镜像1
- 【iCore4 双核心板_uC/OS-II】例程一:认识 uC/OS-II