分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 前端开发

js中8种创建对象的方式

发布时间:2023-09-06 01:46责任编辑:熊小新关键词:js

对象的定义为:“无序属性的集合,其属性可以包含基本值,对象或者函数”

 

1.创建单个对象(对象字面量,构造函数):

<script type="text/javascript"> ???//通过创建phone实例为例子 ???//构造函数创建单个对象 ???????// var phone=new Object(); ???????// phone.color=‘black‘; ???????// phone.size=24; ???????// phone.getColor=function(){ ???????// ????console.log(this.color); ???????// } ???//对象字面量创建单个对象 ???????var phone={ ???????????//属性 ???????????color:‘black‘, ???????????size:24, ???????????//方法 ???????????getColor:function () { ???????????????console.log(this.color); ???????????} ???????} ???//测试 ???console.log(phone)</script>

测试结果为:

2.工厂模式创建多个对象

利:可以创建多个相似对象

弊:所有创建的对象的类型都为Object类型

<script type="text/javascript"> ???//工厂模式 ???????function createPhone(color,size){ ???????????//创建一个Object对象 ???????????var o=new Object(); ???????????//将传入的值赋给这个对象的属性 ???????????o.color=color; ???????????o.size=size; ???????????o.getColor=function(){ ???????????????console.log(this.color); ???????????} ???????????//返回这个对象 ???????????return o; ???????} ???//测试 ???????var phone1=createPhone(‘black‘,8); ???????var phone2=createPhone(‘blue‘,5); ???????console.log(phone1,phone2)</script>

3.构造函数模式创建多个对象

利:自定义构造函数可以将实例构造成一种特定的类型

弊:每创建一个实例,都要创建一个getColor方法

<script type="text/javascript"> ???//构造函数模式 ???????function Phone(color,size){ ???????????this.color=color; ???????????this.size=size; ???????????this.getColor=function(){ ???????????????console.log(this.color); ???????????} ???????} ???????//1.创建一个新对象 ???????//2.将构造函数的作用域赋给新对象(this指向这个新对象) ???????//3.执行构造函数中的代码 ???????//4.返回新对象 ???????var phone1=new Phone(‘black‘,4); ???????var phone2=new Phone(‘blue‘,5);</script>

4.原型模式创建多个对象

利:可以让所有对象的实例都共享它所包含的属性和方法

弊:所有实例取得的属性值都是一样的,原型对象对所有实例一视同仁,开放共享

<script type="text/javascript"> ???//原型模式 ???????// function Phone(){}; ???????// Phone.prototype.color=‘black‘; ???????// Phone.prototype.size=5; ???????// Phone.prototype.getColor=function(){ ???????// ????console.log(this.color); ???????// } ???????// var phone1=new Phone(); ???????// console.log(phone1); ???//也可以使用对象字面量写 ???????function Phone(){} ????????Phone.prototype={ ???????????color:‘black‘, ???????????size:5, ???????????getColor:function(){ ???????????????console.log(this.color) ???????????} ???????} ???????var phone1=new Phone(); ???????console.log(phone1)</script>

5.组合使用构造函数和原型模式创建多个对象

<script type="text/javascript"> ???//组合使用构造函数模式和原型模式 ???????function Phone(color,size){ ???????????this.color=color; ???????????this.size=size; ???????} ???????Phone.prototype={ ???????????constructor:Phone, ???????????getColor:function(){ ???????????????console.log(this.color) ???????????} ???????} ???????var phone1=new Phone(‘black‘,2); ???????var phone2=new Phone(‘blue‘,5); ???????phone1.color=‘golden‘; ???????console.log(phone1); ???????console.log(phone2);</script>

6.动态原型模式创建多个对象

<script type="text/javascript"> ???//动态原型模式 ???????function Phone(color,size){ ???????????this.color=color; ???????????this.size=size; ???????????//初次调用构造函数时才会执行下面的代码 ???????????if(typeof this.getColor!=‘function‘){ ???????????????//不能使用对象字面量方式创建 ???????????????Phone.prototype.getColor=function(){ ???????????????????console.log(this.color); ???????????????} ???????????} ???????} ???????var phone1=new Phone(‘black‘,3); ???????console.log(phone1); ???????phone1.getColor();</script>

7.寄生构造函数模式创建多个对象

<script type="text/javascript"> ???//寄生构造函数模式 ???????function Phone(color,size){ ???????????var o=new Object(); ???????????o.color=color; ???????????o.size=size; ???????????o.getColor=function(){ ???????????????console.log(this.color) ???????????} ???????????return o; ???????} ???????var phone1=new Phone(‘black‘,3); ???????console.log(phone1)</script>

8.稳妥构造函数模式创建多个对象

<script type="text/javascript"> ???//稳妥构造函数模式(稳妥对象是指没有公共属性) ???????function Phone(color,size){ ???????????var o=new Object(); ???????????//定义私有变量 ???????????var name=‘huaiwei‘; ???????????//定义私有函数 ???????????var getName=function(){ ???????????????console.log(name); ???????????} ???????????o.getColor=function(){ ???????????????console.log(color); ???????????} ???????????return o; ???????} ???????var phone1=Phone(‘black‘,3); ???????phone1.getColor();</script>

js中8种创建对象的方式

原文地址:https://www.cnblogs.com/xingguozhiming/p/8642094.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved